Excel 文本文件连接 TextFileColumnDataTypes

Excel text file connection TextFileColumnDataTypes

我在 Excel 中连接的 TextFileColumnDataTypes 参数中使用的数组有问题。

我在下面的代码中添加了注释,这样您就可以看到有问题的行。这不是我正在使用的完整代码,但错误是相同的,这基本上是归结的,所以有些东西可能看起来有点粗糙,因为我已经将它们硬编码到这个例子中。

Sub TestWhyStuffBreaks()
Dim xlApp As Excel.Application, xlWb As Excel.Workbook, xlSht As Excel.Worksheet, i As Integer, arrDT() As Integer

Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Add

ReDim arrDT(16)
For i = 1 To 16
    arrDT(i) = 2
Next i

xlApp.Visible = True

Set xlSht = xlWb.Sheets(1)

With xlSht.QueryTables.Add(Connection:="TEXT;C:\temp\textfile.txt", Destination:=xlSht.Range("$A"))
    .Name = xlSht.Name
    .FieldNames = True
    .RowNumbers = False
    .TextFilePlatform = 437
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierNone
    .TextFileConsecutiveDelimiter = False
    .TextFileOtherDelimiter = "|"
    .TextFileColumnDataTypes = arrDT 'This line errors with message of "Invalid procedure call or argument".
    '.TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) 'This line is fine but not how I want to do it, I want to be able to dynamically change the length of the array.
    .Refresh BackgroundQuery:=False
End With

End Sub

在完整版本的代码中,数组的大小不同,因为它循环遍历了 1 个以上的文本文件,因此希望对其进行动态处理。

在这种情况下,Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)arrDT 有什么区别?

所以,答案是将 Option Base 1 放在模块的顶部,或者从 0 到 15 循环。

与 TextFileColumnDataTypes 无关属性,只是我对数组很垃圾!

这非常有效!

'Declare your Array as integer
Public Indices() As Integer
'with a loop set dimension
ReDim Indices(69)
'insert this line
.TextFileColumnDataTypes = Indices