在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作为参数
希望这可能有帮助!