ADOを使用してExcel2007スプレッドシートからデータを読み取っています。接続の設定は簡単です。
Dim ado As ADODB.Connection
Set ado = CreateObject("ADODB.Connection")
ado.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myFilename.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"";"
ado.Open
ado.OpenSchema
このオブジェクトで問題なく呼び出すことができます。ただし、データをクエリしようとすると、次のようになります。
Dim rs As ADODB.recordSet
Set rs = ado.Execute("SELECT * FROM [Current Work Load$]")
Nullでいっぱいのテーブルを取得するだけです。
これはMicrosoftサポートサイトで問題として言及されていますが、「インポートモード」を明示的に有効にしました(上記のコードで確認できますIMEX=1
)。