2016-11-07 6 views
1

Excelを使用してテーブル(Purchases)をクエリするSQLを使用しようとしています。ただし、以下のスクリプトを実行するとエラーが発生します。エラーExcelでVBAを使用してADODBを使用してテーブルをクエリする

tableaddress変数は、Purchases!$ A $ 2:$ F $ 1200を生成します。これは、テーブル "Purchases"の範囲です。

生成されるSQLクエリは次のとおりです。

Select * From [Purchases!$A$2:$F$1200] 

以下に示すように、現在のVBA自体は次のとおりです。

Dim cn As New ADODB.Connection 
    Dim rs As New ADODB.Recordset 
    Dim strSQL As String 
    Dim tableAddress As String 

    Set cn = New ADODB.Connection 
    cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name 

    cn.Open 
    tableAddress = "Purchases!" & Range("Purchases").Address 
    strSQL = "Select * From [" & tableAddress & "]" 
    rs.Open strSQL, cn 
    cn.Close 

実行するときしかし、私は以下のエラーを取得...

[Microsoft][ODBC Excel Driver] 'Purchases!$A$2:$F$1200' is not a valid name. 
Make sure that it does not include invalid characters or punctuation and that it is no too long. 

エラーにアポストロフィが表示されていますが、句読点が参照されているかどうか、または取り除く方法がわかりませんもしそうなら、それの。

ありがとうございます!

次のコードは動作するはずです
+0

あなたは '[]'なしてみましたか? –

+0

私は、 'FROM句に構文エラー'という問題があります。もともと私はそれを持っていましたが、ADODBの他の指示で参照されているものを見た後に括弧を追加しました。 –

+1

'ActiveWorkbook.Path&Application.PathSeparator&ActiveWorkbook.Name'はどうですか? 'ActiveWorkbook'はそれがあなたが思っているもので、それに' Purchases'タブがあると確信していますか?また、SQL文で完全なファイルパスを修飾してみてください。 ' –

答えて

1

Dim cn As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Dim strSQL As String 
Dim tableAddress As String 

Set cn = New ADODB.Connection 
cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name 

cn.Open 
tableAddress = "Purchases$" & Range("Purchases").Address(False, False) 
strSQL = "Select * From [" & tableAddress & "]" 
rs.Open strSQL, cn 
cn.Close 
+0

'$'に良いものがあります。ここに私が忘れていたトリックがあることは分かっていた! –

+0

@ScottHoltzman - 答えを見つけるために私はグーグルでなければならなかった - 私はいつもソースエリアを指定するときにまっすぐな範囲名を使うだけだ。 – YowE3K

+0

これは完璧です!私は何かが簡単でないことを知っていた。助けてくれてありがとう! –

関連する問題