У меня возникла проблема с массивом, используемым в аргументе TextFileColumnDataTypes
соединения в Excel.Подключение текстового файла 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$1"))
.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
?
Возможно, я ошибаюсь, и я не могу вспомнить, как я его решил (у меня была такая же проблема некоторое время назад), можете ли вы попытаться объявить массив как вариант и посмотреть, разрешит ли он это? Я уверен, что имеет какое-то отношение к [cast it] (https://msdn.microsoft.com/en-us/library/tbatye4h.aspx) – Sgdva
Я пробовал это как вариант, длинный, двойной, и он все равно дает мне то же сообщение об ошибке. Это очень раздражает! Будет ли эта ссылка на конвертацию работать только для позднего связывания? –
Ах-ха! У меня есть, скоро ответит! –