【发布时间】:2019-02-01 23:55:29
【问题描述】:
在下面附加的代码中,尽管逗号分隔符设置为 false 并且分号分隔符设置为 true,但宏打开 .csv 时使用分号和逗号分隔的值(至少看起来是这样)。
我尝试切换代码片段的顺序,但无济于事。 代码的历史和目的可以在这个线程中找到:VBA run-time error '1004' while looping through .csv file。请告知我在这里做错了什么或遗漏了什么?
(与this问题相关的主题。)
Dim wrk As Workbook
Dim Sh As Worksheet
Dim findMatch As Range, searchInColumn As Range
Dim i As Long, j As Long, k As Long
Dim chosenFile As Integer
Dim xlFileName As String
Dim chooseFiles As Office.FileDialog
Set DictChanged = CreateObject("Scripting.Dictionary")
Set DictToBeDone = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
Set chooseFiles = Application.FileDialog(msoFileDialogFilePicker)
With chooseFiles
.AllowMultiSelect = True
.Title = "Please select the file."
.InitialFileName = "c:\"
.InitialView = msoFileDialogViewList
.Filters.Add "All", "*.*"
End With
If chooseFiles.Show = -1 Then
For k = 1 To chooseFiles.SelectedItems.Count
xlFileName = chooseFiles.SelectedItems(k)
Set wrk = Application.Workbooks.Open(xlFileName)
Set Sh = wrk.Worksheets(1)
If InStr(1, wrk.Name, ".csv") Then
Sh.Range(Range("A1"), Range("A1").End(xlDown)).TextToColumns _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False
End If
End If
所描述的问题发生在可见代码中。根据要求在以下输出阶段:
输出阶段:
初始文件
+---------+---------+---------+---------------- --+------------+-----------------+ |第 1 列 |第 2 列 |第 3 列 |第 4 列 |第 5 列 |第 6 栏 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654321 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654322 |一些ID |价值观,带逗号 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654323 |一些ID |价值观,带逗号 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654324 |一些ID |值,uesWithComma |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654325 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654326 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654327 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+ ------------+-----------------+ | 123456 | 654328 |一些ID |带逗号的值 |一些价值观 |一些其他值 |
2.AfterPickingFileInFileDialog
+--------------------------------------------- -------------------+-------------------------------- ------------+ |第 1 列;第 2 列;第 3 列;第 4 列;第 5 列;第 6 列 |第 2 列 | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654321;SomeID;ValuesWithComma;SomeValues;SomeOtherValues | 654321 | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654322;SomeID;值 | With Comma;SomeValues;SomeOtherValues | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654323;SomeID;值 | With Comma;SomeValues;SomeOtherValues | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654324;SomeID;Val | uesWithComma;SomeValues;SomeOtherValues | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654325;SomeID;ValuesWithComma;SomeValues;SomeOtherValues | 654325 | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654326;SomeID;ValuesWithComma;SomeValues;SomeOtherValues | 654326 | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654327;SomeID;ValuesWithComma;SomeValues;SomeOtherValues | 654327 | +-------------------------------------------------- ----------------+------------------------------------------------ --------+ | 123456;654328;SomeID;ValuesWithComma;SomeValues;SomeOtherValues | 654328 | +-------------------------------------------------- ----------------+------------------------------------------------ --------+
3.AfterLastCondition
+---------+---------+---------+---------------- -+------------+-----------------+ |第 1 列 |第 2 列 |第 3 列 |第 4 列 |第 5 列 |第 6 栏 | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654321 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654322 |一些ID |价值观 | | | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654323 |一些ID |价值观 | | | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654324 |一些ID |瓦尔 | | | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654325 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654326 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654327 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+- ------------+------------------+ | 123456 | 654328 |一些ID |带逗号的值 |一些价值观 |一些其他价值观 | +---------+---------+---------+------------------+- -----------+-----------------+
【问题讨论】:
-
“至少看起来是这样的” 似乎需要进行更多调查才能真正确认这里存在问题。贴出的代码不完整,两次调用
TextToColumns。我的理解是你首先打开文件,它都出现在一个列中,然后你调用 texttocolumns 。您需要检查每个阶段的输出并了解发生了什么 -
您好像打开同一个文件 3 次?
-
一般来说,导入
.csv文件比打开文件要好。如果您必须打开它,并且它具有非标准分隔符(或与您的 Windows 区域设置不同的日期格式,那么您可以将文件类型更改为.txt。 -
请参阅此处以获取带有分隔符 stackoverflow.com/questions/17832618/… 的“打开”示例,但显然您需要确保扩展名是 .txt。
-
“初始文件”没有分号。而且您的数据屏幕截图对于进行适当的故障排除几乎毫无用处。它不能被复制/粘贴到工作表中。可以尝试 OCR 程序,或手动输入。不得不做其中任何一个都会让那些可能会帮助你的人感到沮丧。为了使数据有用,请编辑您的问题以将其作为文本发布,可能使用此Markdown Tables Generator,或者可能将
*.csv文件(已删除敏感信息)上传到某个公共网站并在您的原始问题中发布链接