2017-08-24 16 views
0

8行目でタイプの不一致範囲エラーが発生しています。誰かが間違っていることを親切に説明できますか?QueryTableのVBAタイプの不一致エラー

おかげ

Set objExcel = CreateObject("Excel.application") 
Set objWorkbook = objExcel.Workbooks.Add() 
Set objSheet = objWorkbook.Worksheets.Add 
objExcel.Visible = True 
objExcel.DisplayAlerts = True 
objExcel.Workbooks.Add(1) 

With objExcel.ActiveSheet.QueryTables.Add(Connection="TEXT;C:\temp\file.csv", Destination=Range("$A$1")) 
    '.CommandType = 0 
    .Name = "test_ITS_ExtractX" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .TextFilePromptOnRefresh = False 
    .TextFilePlatform = 850 
    .TextFileStartRow = 1 
    .TextFileParseType = xlDelimited 
    .TextFileTextQualifier = xlTextQualifierDoubleQuote 
    .TextFileConsecutiveDelimiter = False 
    .TextFileTabDelimiter = True 
    .TextFileSemicolonDelimiter = False 
    .TextFileCommaDelimiter = False 
    .TextFileSpaceDelimiter = False 
    .TextFileColumnDataTypes = Array(2, 2) 
    .TextFileTrailingMinusNumbers = True 
    .Refresh BackgroundQuery=False 
End With 

objExcel.ActiveWorkbook.SaveAs Filename="c:/temp/file.xlsx", FileFormat=xlOpenXMLWorkbook, CreateBackup=False 

objExcel.DisplayAlerts = Trueの objExcel.Quit

答えて

2

コードが実際にVBAバリアントのいずれかに書き込まれている場合、名前付きパラメータは、=の代わりに:=を使用して指定する必要があります。私はあなたのコードを実行すると、これは "タイプの不一致"エラーを生成します。

修飾されていないRangeオブジェクトもあります(answer by Domenicを参照)。これにより、構文エラーを修正すると問題が発生します。

だから、正しい行は次のようになります。

With objExcel.ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\temp\file.csv", _ 
              Destination:=objExcel.ActiveSheet.Range("$A$1")) 

とあなたの後の行のいずれかが

objExcel.ActiveWorkbook.SaveAs Filename:="c:\temp\file.xlsx", _ 
           FileFormat:=xlOpenXMLWorkbook, _ 
           CreateBackup:=False 

であるべきと私はちょうど

.Refresh BackgroundQuery:=False 

に気づいた(注:ことを確認してくださいxlOpenXMLWorkbook定数は、これを実行しているアプリケーションで利用できます。そうでない場合は、nあなた自身に正しい値を割り当ててください。 xlInsertDeleteCellsなども同様)

+0

非常に徹底的な答えと追加情報ありがとう、それは確かに私の非常に限られたVBAの知識に役立ちます。 – Kaines

2

試してみてください...

With objExcel.ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\temp\file.csv", Destination:=objExcel.ActiveSheet.Range("$A$1")) 

・ホープ、このことができます!

+0

ありがとうございます。多くの助けになります! – Kaines

+0

私は名前付きパラメータに関する 'YowE3K'の発言のように投稿を編集しました。 – Domenic

関連する問題