複数のシートを含むワークブックがあり、各シートには同じ名前付き範囲のセットがあります (つまり、ワークブックではなくシートにスコープが設定されています)。
いずれかのシートの名前付き範囲に基づいてクエリを実行したい。名前にスペースが含まれていないシートもあれば、名前にスペースが含まれているシートもあります。
スペースのないものでも簡単に実行できますが、スペースを使用してこれを行うための構文は私を逃れます (そして 1 時間のグーグル検索)。
名前付き範囲は「Ingredients」で、1 枚のシートは「NoSpaces」、もう 1 枚は「With Spaces」という名前です。
「NoSpaces」シートで正常に機能するコードは次のとおりです。
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dictNewRecipesToCheck(arrKeys(0)) & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1;"""
strQuery = "Select * from [NoSpaces$Ingredients]"
Set objConn = New ADODB.Connection
Set objRecordSet = New ADODB.Recordset
objConn.Open sConnString
objRecordSet.Open strQuery, objConn
「スペースあり」シートについて、次のすべてを試しました。
strQuery = "Select * from [With Spaces$Ingredients]"
strQuery = "Select * from ['With Spaces'$Ingredients]"
strQuery = "Select * from ['With Spaces$'Ingredients]"
strQuery = "Select * from [With_Spaces$Ingredients]"
毎回、「Microsoft Access データベース エンジンはオブジェクトを見つけられませんでした ...」というエラーが表示されます。
前述したように、名前にスペースが含まれていないすべてのシートで問題なく機能します。
スペースのあるシートでこれを機能させるための助けがあれば、大歓迎です。
ありがとう!
以下のコメントに基づく更新:
エクセル2007
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=1;"""
@shahkalpesh によって提供されたスキーマ コードを実行すると、TABLE_NAME が両方の名前付き範囲の単なる「成分」としてリストされます (それぞれが別のシートにスコープされていても)。
このドライバーでは、[NoSpaces$Ingredients] でも機能しません。
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"""
@shahkalpesh によって提供されたスキーマ コードを実行すると、TABLE_NAME が "NoSpaces$Ingredients" および "'With Spaces'$Ingredients" としてリストされます。このドライバーでは、[NoSpaces$Ingredients] は正常に機能します (ACE ドライバーでは機能しませんでした)。
ただし、スキーマによって報告された正確な名前を使用すると、['With Spaces'$Ingredients] は機能しません。
エクセル2013
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=1;"""
@shahkalpesh によって提供されたスキーマ コードを実行すると、TABLE_NAME が "NoSpaces$Ingredients" および "'With Spaces$'Ingredients" としてリストされます。このドライバーでは、[NoSpaces$Ingredients] は問題なく動作しますが、['With Spaces'$Ingredients] は動作しません。
最後に、 http://db.tt/3lEYm2g1を参照して、Excel 2007 で作成された、(少なくとも) 2 台の異なるマシンでこの問題が発生するサンプル シートを参照してください。