2016-12-08 7 views
0

Excelの接続の引数で使用されている配列に問題があります。Excelテキストファイルの接続TextFileColumnDataTypes

問題が発生している行が表示されるように、以下のコードでコメントしました。これは私の完全なコードが使用されているのではなく、エラーは同じで、これは本質的にボイルダウンされているので、この例にハードコードしているので、アレイのサイズは、それが故にそれについて動的ことを望む1つの以上のテキストファイルをループだとして異なるコードのフルバージョンで

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 

この場合のArray(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)arrDTの違いは何ですか?

+0

私は間違っているかもしれませんが、私はそれを解決した方法を思い出すことができません(私は以前の同じ問題を抱えていました)あなたはバリアントとして配列を宣言しようとすると、私はかなり[キャストする]と関係があると確信しています(https://msdn.microsoft.com/en-us/library/tbatye4h.aspx) – Sgdva

+0

私はVariant、Long、Doubleとして試しました。それでも私には同じエラーメッセージが表示されます。それは非常に刺激的です!その変換リンクは、後でバインドする場合にのみ機能しますか? –

+0

ああ!私はそれを持っている、すぐに答えを投稿します! –

答えて

0

だから、答えはちょうど私は、配列のがらくたされ、TextFileColumnDataTypesプロパティで行うことを15

Nothingにあなたのモジュール、または0から貫通ループの先頭でOption Base 1を置くことのいずれかであります!