我在Excel 2007/2010中创建了VBA代码,用于从CSV文件导入数据。不幸的是,当我以编程方式打开文件时,对于某些数据行,数据被拆分为两列(A和B)。
当我手动打开CSV文件时,一切显示正常!
CSV数据通常如下所示(标题行示例):
“特巴科”;“TBSAIS”;“TBSKU9“;“TBSMOD”;“平板电脑”;“TBKBNR“;“TBBEZ2“;“TBFAR2
“;“三苯磺GC”;“三苯磺GC”;“TBEINK“;“TBKBGR“;“TBKBGF“;“TBVKPE“;“三苯甲酮“;“三苯甲酮
“;“土巴湾”;“土巴湾”;“土耳其”;“土耳其斯坦”;“特布卢人”;“特布卢人”;“TBERDT“;“TBDATV“;“TBDATB“
导致问题的数据在文本中包含逗号。以下是一个示例:
JEAN 5袋可伸展+1,60 M
下面是代码:
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列。
6条答案
按热度按时间hwamh0ep1#
添加
Local:=True
作为Workbooks.Open
中的参数希望这可能会有帮助!
tjvv9vkg2#
我仍然怀疑这是因为扩展名是CSV。如果你把文件重命名为.txt会发生什么?
dgtucam13#
要导入带有非逗号分隔符的数据,应将
Format
属性设置为6,以便能够定义delimiter
,如here所述。如果直接将Format
设置为4,也应该可以使用qcuzuvrc4#
我认为当你手动操作时,Excel会将分隔符读取为“;“而且不仅仅是;。
试试这个:
编辑:
唯一的方法我可以得到这个工作是通过改变文件扩展名从csv到txt,然后运行以下代码:
c2e8gylq5#
我知道两种可能的解决方法:
1)将扩展名从
.csv
更改为例如.xxx
,并按如下方式打开它:如果您使用
.csv
或.xls
,则excel将使用操作系统中的默认值覆盖设置。2)在Windows 10中,将您的区域设置从
English - United States
更改为English - United Kingdom
。奇怪的是,这有帮助,高级日期/时间中的分隔符设置是什么并不重要。在Windows 7中,我认为分隔符设置起作用了。ct3nt3jp6#
将单元格格式更改为文本。例如,单元格(1,1)。NumberFormat =“@”