複数のシートを含むブックがあり、各シートには名前付き範囲の同じセットが含まれています(ブックには範囲がありません)。Excelの名前にスペースが含まれているシート上の名前付き範囲を照会できません
いずれかのシートの名前付き範囲に基づいてクエリを実行したいとします。いくつかのシートは空白のない名前を持ち、他のシートはスペースを含む名前を持っています。
私はスペースのないものに対してもこれを簡単に行うことができますが、スペースでこれを行うための構文は私を逃げ出します(そして1時間のgoogle-ing)。
名前付き範囲は、「食材」であり、1枚が「NoSpaces」と命名され、他の「スペースで」
ここで「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データベースエンジンは、オブジェクトを見つけることができませんでした...』エラー:すべてのシート 『スペースで』のために、次の試してみました」VEの。
私が述べたように、それは名前にスペースを持たないすべてのシートでうまく動作します。
空白のシートでこれを行うには、何か助けてください。
ありがとうございます!それぞれがあるにもかかわらず
Excel 2007の
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=1;"""
@shahkalpeshが提供するスキーマのコードを実行すると、それは両方の名前付き範囲のためだけに、「食材」としてTABLE_NAMEを示しています(下記コメントに基づいて
UPDATES異なるシートにスコープされます)。
このドライバでは、[NoSpaces $ Ingredients]も機能しません。
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"""
@shahkalpeshが提供するスキーマのコードを実行すると、それは「$食材 『スペースで』「」NoSpaces $食材」としてTABLE_NAMEを示しています。このドライバでは、[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が提供するスキーマのコードを実行すると、それは "食材 'スペース$で' "" NoSpaces $食材" としてTABLE_NAMEを示しています。このドライバでは、[NoSpaces $ Ingredients]は正常に動作しますが、['With Spaces' $ Ingredients]は機能しません。
最後に、Excel 2007で作成された(少なくとも)2台の異なるマシンでこの問題が発生しているサンプルシートについては、http://db.tt/3lEYm2g1を参照してください。
Excel 2013を使用して、通常の範囲(名前付き範囲ではない)を導入し、コロン(「:」)を使用して問題を解決しました。例えば。 '[Report 1 $ A15]'は動作しませんが、[Report 1 $ A15:A15]は動作します。 – ZygD