2017-09-06 34 views
0

私は、SQLリクエストを使用してcsvファイルからデータを取得することを目指しています。以前のワークブックですでに正常に作成されていたので、コピーしてSQLリクエスト部分でのみ変更しました。私は、コードをコピーした後に変更されていない最初の行に実行エラー9を持っている:Excel VBA listobjects.addクエリ可能なエラー9

ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(_ 
    "ODBC;DBQ=" & Path & ";DefaultDir=" & Path & _ 
    ";Driver={Microsoft Access Text Driver (*.txt, *.csv)};DriverId=27;FIL=text", _ 
    ";MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;" _ 
    ), Destination:=ThisWorkbook.Sheets("Sessions").Range("$A$1")).QueryTable 

変数のパスは、ファイルが保存されているフォルダに取得するためのパスです。シート "セッション"は、この行が実行される前に作成され、anがアクティブ化されます。

これは、要求の完全なコードは次のようになります。それはそれを使用して唯一の私の第二のプログラムであるとして

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(_ 
    "ODBC;DBQ=" & Path & ";DefaultDir=" & Path & _ 
    ";Driver={Microsoft Access Text Driver (*.txt, *.csv)};DriverId=27;FIL=text", _ 
    ";MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;" _ 
    ), Destination:=ThisWorkbook.Sheets("Sessions").Range("$A$1")).QueryTable 
    .CommandText = Array(_ 
    Selection & Chr(13) & Chr(10) & "FROM `" & NameFile(1) & "` `" & NameFile(2) & "`" & _ 
    Chr(13) & Chr(10) & Condition) 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .ListObject.DisplayName = "Session" 
    .Refresh BackgroundQuery:=False 
End With 

私は、VBAでの接続ではかなり新しいです。それはおそらく非常に簡単に修正するが、私は私の場合のための解決策を見つけることができませんでした。

+0

答え: 'Destination:= Activesheet.Range(" $ A $ 1 ")' – Rory

+0

Thxです。範囲( "$ A $ 1") 範囲( "$ A $ 1")、activesheet.range( "$ A $ 1")、ThisWorkbook.Sheets( "セッション")範囲( "$ A $ 1") 正確には、指定されたものは正しいものです(コンピュータ上のファイルを含むフォルダへのリンク)。 –

+0

Source引数からArray()コマンドを削除してみてください。不要です。 – Rory

答えて

0

問題は "Option base 1"とレコーダーで使用されている配列から来ています。オプションを保持し、配列ワークを避けるためにコードを変更するだけでなく、「Option Base 1」をよく削除します。

関連する問題