2016-12-08 1 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

아무것도에 모듈 또는 0을 통해 루프의 상단에 Option Base 1를 넣어 중 하나입니다!