【发布时间】:2023-01-19 18:00:06
【问题描述】:
我正在尝试在 VBA 中完成以下操作:
- 打开文件夹中的每个文件(1 x 1)
- 由于所有文件都是 CSV,我想将它们分成更多的列以收集我需要的数据。
- 我想将这些复制粘贴到一个特定的 excel 中。这些大约有 300 行。
- 在那个特定的 excel 中,我想让它们相互粘贴。
我已经拥有的:
- 找到我需要的所有文件的方法。
- 将 CSV 数据制作成列。
- 复制粘贴方法。
- 找到下面的第一个空行。
问题是:
- 我没有足够的知识让宏对所有 CSV 执行此操作
请在下面查看我到目前为止的代码:
Sub pm_logger()
Application.ScreenUpdating = False
Dim bookDest As Workbook
Dim bookFrom As Workbook
Dim lDestLastRow as Long
Dim sh As Worksheet
Workbooks.Open "P:\logs\logstorage.xlsx"
Workbooks.Open "P:\logs\logfile.csv"
Set bookDest = Workbooks("logstorage.xlsx")
Set bookFrom = Workbooks("logfile.csv")
bookFrom.Activate
Set sh = Worksheets(1)
With sh
Set Rng = .Range("A5:A305")
Set Rng = .Range(Rng, .Cells(.Rows.Count, Rng.Column).End(xlUp))
Rng.TextToColumns Destination:=Rng, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=True, _
Space:=False, _
Other:=False, _
FieldInfo:=Array(Array(1, xlGeneralFormat), Array(2, xlGeneralFormat), Array(3, xlGeneralFormat)), _
TrailingMinusNumbers:=True
End With
bookFrom.Worksheets(1).Range("A5:K304").Copy
lDestLastRow = bookDest.Cells(bookDest.Rows.Count, "A").End(xlUp).Offset(1).Row
bookDest.Range("A" & xlDestLastRow).PasteSpecial Paste:=xlPasteValues
'Workbooks("logstorage.xlsx").Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub
非常感谢您!
【问题讨论】:
-
使用宏记录器做你需要手动做的事情,然后从那里开始。