3

我在 Excel 2007/2010 中创建了 VBA 代码以从 CSV 文件导入数据。不幸的是,当我以编程方式打开文件时,对于某些数据行,数据被分成两列(A 和 B)。

当我手动打开 CSV 文件时,一切正常!

通常 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 可扩展+1,60M

这是代码:

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

问题截图。打开文件后,红色的东西在B列。
在此处输入图像描述

4

5 回答 5

4

Local:=TrueWorkbooks.Open
希望这可能会有所帮助!

于 2015-06-24T13:07:39.647 回答
1

我仍然怀疑这是因为扩展名是 CSV。如果将文件重命名为 .txt 会发生什么?

于 2012-12-06T15:58:03.690 回答
1

我认为当您手动执行此操作时,Excel 会将分隔符读取为“;” 而不仅仅是;。

尝试这个:

Workbooks.Open Filename:=wkbCsvImport, Format:=xlDelimited, Delimiter:=""";"""

编辑:

我可以让它工作的唯一方法是将文件扩展名从 csv 更改为 txt,然后运行以下代码:

Workbooks.OpenText Filename:=wkbCsvImport, _
                    DataType:=xlDelimited, semicolon:=True
于 2012-12-06T15:22:26.507 回答
1

为了使用不是逗号的分隔符导入数据,您应该将Format属性设置为 6 以便能够定义您的,如此delimiter所述。如果您直接设置为4 ,它也应该工作Format

于 2012-12-06T15:22:17.283 回答
1

我知道两种可能的解决方法:

1)将扩展名从更改.csv为例如.xxx并像这样打开它:

Workbooks.OpenText fileName:="file.xxx", _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=1, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False, OtherChar:="", _
TrailingMinusNumbers:=True, Local:=True

如果您使用.csvor .xls,则 excel 会通过操作系统的默认值覆盖设置。

2) 在 Windows 10 中,将您的区域设置从 更改English - United StatesEnglish - United Kingdom。奇怪的是它有帮助,高级日期/时间中的分隔符设置无关紧要。在 Windows 7 中,我认为分隔符设置有效。

于 2019-11-12T15:15:29.067 回答