【发布时间】:2021-12-19 14:07:53
【问题描述】:
我有大量设置相同的 .csv 文档。它们都是 .csv,因此都需要简单的格式。我的目标很简单:
- 将它们从 .csv 格式化为常规列(例如,Excel 中的 TextToColumns)
- 将每个单独文件中的数据提取到一个 Excel 工作表中以供进一步分析
我在 VBA 中尝试了很多方法来循环使用宏的文件夹,但我还没有成功。事实上,没有一个宏做任何改变(?) 我希望有人能帮帮忙。我的尝试之一如下所示。
最好, 卡尔
Dim filename As Variant
Dim a As Integer
a = 1
filename = Dir("/Users/karlemilthulstrup/Downloads/Test med kun 1Vp/Files*.csv")
Do While filename <> ""
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1)), _
DecimalSeparator:=".", ThousandsSeparator:=",", TrailingMinusNumbers:= _
True
Loop
End Sub
编辑:
OPs Eureka! 来自 cmets 的代码:
Sub test6()
Dim filename As Variant
Dim a As Integer
Dim MyFiles As String
a = 1
filename = Dir("/Users/karlemilthulstrup/Downloads/Test med kun 1Vp/Files.csv")
Do While filename <> ""
Workbooks.Open MyFiles
ActiveWorkbook.Close SaveChanges:=True
filename = Dir
Loop
End Sub
【问题讨论】:
-
你必须实际打开文件。
-
为了选择一些东西,你应该打开文件,然后使用
Dir()使循环继续......你是尝试在csv文件上做些什么还是先复制现有工作簿中的数据?如果修改它,应该保存并关闭它,然后再处理下一个。无论如何,选择无济于事。它只消耗 Excel 资源,并没有带来任何好处。 -
如果不打开文件,您将永远不会对其进行任何更改:查看:
application.workbooks.add -
Power Query 对此很有用。数据 > 获取数据 > 从文件 > 从文件夹
-
如果您使用 VBA 路由,请将您的工作簿设置为一个变量 -
Set WrkBk = Workbooks.Open(filename)和WrkBk.Worksheets("Sheet1").Columns("A:A").TextToColumns.....和WrkBk.Close SaveChanges:=True。我不会依赖ActiveWorkbook是正确的工作簿。必填链接:how-to-avoid-using-select-in-excel-vba