2017-03-06 7 views
0

Excel VBAからMS Accessクエリを実行します。そのために、ADODB.ConnectionとADODB.Commandを使ってクエリを呼び出しています。原則として動作しますが、名前には「Query_3/6/1/1」というスラッシュが含まれているため、問題があります。以下のスクリプトを実行すると、「Microsoft Office Accessデータベースエンジンが入力テーブルまたはクエリ 'Query_3'を見つけることができません」というエラーメッセージが表示されます。したがって、スラッシュに続く名前の残りの部分は考慮しません。私はすでに括弧[]でそれをエスケープしようとしましたが、それは役に立ちません。スラッシュを含むモジュール名でExcel VBAからアクセスクエリを実行

モジュールの名前を変更すると動作しますが、それらのモジュールが多数あり、すでに他の依存関係が存在するため、実際には解決策ではありません。

私は非常に助けてうれしいです!

Dim con As ADODB.Connection 
Dim cmd As ADODB.Command 

With con 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .Open "C:\Users\...\file.accdb" 
End With 

With cmd 
    .ActiveConnection = con 
    .CommandText = "Query_3/6/1/1" 
    .CommandType = adCmdStoredProc 
End With 

Set rs = New ADODB.Recordset 
rs.Open cmd 
... 

答えて

0

私はあなたが答えが好きになるとは思わない。私はいくつかのテストを行い、Excelはその命名規則を守るつもりはありません。私はQuery_3/6/1/1からビルドされたクエリを呼び出しても動作しません。私はNz()関数を使ったクエリでこの同じ問題に遭遇しました。クエリを再設計しなければならなかった。

アクセス可能なプロシージャは、「一時テーブル」(テーブルは永続的、レコードは一時的)にクエリレコードを書き込み、Excelはこのプロシージャを呼び出して、一時テーブルに基づいてレコードセットを開きます。

関連する問題