尝试使用VBA读取两个.CSV文件的内容时出现问题。这两个文件的结构如下:
<Column 1> <Column 2> <Column 3>
<Data 1.1> <Data 2.1> <Data 3.1>
<Data 1.2> <Data 2.2> <Data 3.2>
<Data 1.3> <Data 2.3> <Data 3.3>
当我使用Workbooks.Open(Filename:=FILEPATH, ReadOnly:=True)
但我在文件中没有获得相同的格式时。
这是我在第一个文件中读到的内容:所有内容都在第1列中,并以分号分隔。
< Column 1 >
<Data 1.1>;<Data 2.1>;<Data 3.1>
<Data 1.2>;<Data 2.2>;<Data 3.2>
<Data 1.3>;<Data 2.3>;<Data 3.3>
这是我在第二个文件中读到的内容:一切都保持正常。
<Column 1> <Column 2> <Column 3>
<Data 1.1> <Data 2.1> <Data 3.1>
<Data 1.2> <Data 2.2> <Data 3.2>
<Data 1.3> <Data 2.3> <Data 3.3>
我很想打开这两个文件并以相同的方式读取数据。我究竟做错了什么 ?是我的代码还是其中一个.CSV文件?
Public Sub openCSVFiles()
Dim openWb1 As Workbook
Dim openWb2 As Workbook
Set openWb1 = Workbooks.Open(Filename:=FILEPATH_1, ReadOnly:=True, Delimiter:=";")
Set openWb2 = Workbooks.Open(Filename:=FILEPATH_2, ReadOnly:=True, Delimiter:=";")
'Cell A2 contains <Data 1.1>
For Each dataRow In openWb1.Sheets(1).Range("A1:C3")
Debug.Print dataRow
Next dataRow
'Cell A2 contains <Data 1.1>;<Data 2.1>;<Data 3.1>
For Each dataRow In openWb2.Sheets(1).Range("A1:C3")
Debug.Print dataRow
Next dataRow
openWb1.Close False
openWb2.Close False
End Sub
答案 0 :(得分:1)
如果您遇到同样的问题,这可能是一个解决方案。问题是分隔符不一样,为了避免这个问题,我们必须在打开文件时指定分隔符。
'Replace this
Set openWb1 = Workbooks.Open(Filename:=FILEPATH_1, ReadOnly:=True)
Set openWb2 = Workbooks.Open(Filename:=FILEPATH_2, ReadOnly:=True
'By this
Set openWb1 = Workbooks.Open(Filename:=FILEPATH_1, _
ReadOnly:=True, _
Delimiter:=YourDelimiterHere)
Set openWb2 = Workbooks.Open(Filename:=FILEPATH_2, _
ReadOnly:=True, _
Delimiter:=YourDelimiterHere)
我指定了Delimiter
参数。 You can find more information about it here
答案 1 :(得分:1)
通常,当您遇到此类问题时,第一步是使用记事本快速浏览一下该文件。一旦您知道分隔符是什么,请根据您的需要使用以下其中一项