提问人:Satron 提问时间:9/26/2023 最后编辑:Satron 更新时间:9/27/2023 访问量:53
您可以使用 VBA 在维护预先存在的数据的 csv 中填充字段吗?
Can you use VBA to populate a field in a csv whist maintaining the pre-existing data?
问:
第一次在这里问任何事情,即使我没有这方面的经验,我的任务也是在 VBA 中做一些事情。我已经阅读了其他帮助我取得一些进展的文章,但我正在尝试从电子表格中提取一些数据,比如 A10:M10,因此从一行中选择几个单元格,然后我必须将它们放入一个预先存在的.csv中,该已经填充了很多字段,这些字段不会因使用而异,但我需要从 A10 获取数据:M10 在 csv 中相当于 Z2:Z12,因此一行到一列。这可能吗?到目前为止,我只设法让我的代码用一些标题填充空白的 .csv,但我真的认为我为每个字段键入每个值是不可行的。任何帮助都非常感谢。
Sub WriteFile()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim RowNum As Integer
Dim SheetValues() As Variant
PathName = Application.ActiveWorkbook.Path
OutputFileNum = FreeFile
Open PathName & "\file.csv" For Output Lock Write As #OutputFileNum
Print #OutputFileNum, "Field1" & "," & "Field2" & "," & "Field3" & "," & "..." & "," & "Field26"
Close OutputFileNum
End Sub
答:
0赞
VBasic2008
9/26/2023
#1
将行复制到列
Sub CopyRowToColumn()
' Source
Dim swb As Workbook: Set swb = ThisWorkbook ' workbook containing this code
Dim sws As Worksheet: Set sws = swb.Sheets("Sheet1")
Dim srg As Range: Set srg = sws.Range("A10:M10") ' 13 cells hence 'Z2:Z14'
Application.ScreenUpdating = False
' Destination
Dim dwb As Workbook:
Set dwb = Workbooks.Open(swb.Path & Application.PathSeparator & "File.csv")
Dim dws As Worksheet: Set dws = wb.Sheets(1) ' the one and only
Dim dfCell As Range: Set dfCell = dws.Range("Z2")
Dim drg As Range: Set drg = dfCell.Resize(srg.Columns.Count)
' Copy values.
drg.Value = Application.Transpose(srg.Value)
' Save and close.
dwb.Close SaveChanges:=True
Application.ScreenUpdating = True
' Inform.
MsgBox "Row copied to column.", vbInformation
End Sub
评论
0赞
Satron
9/27/2023
我得到了这个工作,谢谢。如何修改它以将单个单元格从第一个工作簿复制到第二个工作簿?比如说,从源头的 A10 需要转到目的地的 A2,还需要 4 或 5 个单独的单元格,而不是以任何特定的顺序,因为并不总是 A 到 A 列?我很抱歉,如果这真的是我非常欣赏和帮助的基本内容。
0赞
VBasic2008
9/27/2023
这很特别,因为您正在转置(行到列,反之亦然)。否则,它要简单得多,例如.我的意思是,你可以一个单元格一个单元格地进行转置,对吧?dws.Range("A2").Value = sws.Range("A10").Value
评论
.xlsm
.xlsb