在Excel中使用VBA打开CSV导致数据出现在两列而不是一列
我在Excel 2007/2010中创build了VBA代码,以从CSV文件导入数据。 不幸的是,当我以编程方式打开CSV文件时,数据被分成两列(A和B)用于某些数据行。
通常CSV数据看起来像这样(示例标题行):
TBWAKT;“TBWAKO”,“TBSAIS”,“TBSKU9”,“TBSMOD”,“TBLETT”,“TBKBNR”,“TBBEZ2”,“TBFAR2
“TBSUGC”,“TBSOGC”,“TBEINK”,“TBKBGR”,“TBKBGF”,“TBVKPE”,“TBVKPR”,“TBEKPE
“TBAUAN”“TBFAAN”“TBREAN”“TBSTAN”“TBRUAN”“TBKPAG”“TBERDT”“TBDATV”“TBDATB”
导致问题的数据似乎在一些文本中包括了一个。 这里是一个例子:
JEAN 5 POCHES可扩展性+160M
奇怪的是,当我手动打开CSV文件,一切都显示正常!
这里是我在VBA中使用的代码:
Private Sub OpenCSV(x As Integer, wkbDashboard As String, wkbCsvImport As String, wksDestination As Worksheet) ' Opens CSV and copies data to current workbook Dim wkbCsvImportName As String Dim r As Range Workbooks(wkbDashboard).Activate ' Open and read CSV Workbooks.Open Filename:=wkbCsvImport, Format:=xlDelimited, Delimiter:=";" wkbCsvImportName = ActiveWorkbook.Name
我在Excel中包含了这个问题的截图,以帮助你了解我在说什么。 打开文件后红色的东西在B列。
任何人都知道为什么会发生? 感谢您阅读这个!
我仍然怀疑这是因为扩展名是CSV。 如果将文件重命名为.txt,会发生什么情况?
为了使用非逗号分隔符导入数据,您应该将Format
属性设置为6,以便能够定义您的delimiter
,如此处所述。 如果您直接将Format
设置为4,它也应该工作
我觉得当你手动的时候Excel正在读取分隔符为“;” 而不仅仅是。
尝试这个:
Workbooks.Open Filename:=wkbCsvImport, Format:=xlDelimited, Delimiter:=""";"""
编辑:
我可以得到这个工作的唯一方法是通过将文件扩展名从csv更改为txt,然后运行以下代码:
Workbooks.OpenText Filename:=wkbCsvImport, _ DataType:=xlDelimited, semicolon:=True
在Workbooks.Open
添加Local:=True
作为参数
希望这可能有帮助!