ユーザーから Excel(Book1.xls) ファイルを受け取りました。ワークシートの名前の 1 つが XYZ である場合もあれば、その名前が XYZ1 である場合もあります。
私がやっている
Dim Conn,Rs
Set Conn = CreateObject("ADODB.Connection")
Conn.ConnectionTimeout = 10
Conn.CommandTimeout = 300
Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Book1.xls;Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
Set RS = Conn.Execute("SELECT * FROM [XYZ$B1:B1]")
ワークシート名が XYZ1 の場合、上記のコードの最後の行は、次のエラー メッセージで爆発します。Microsoft Access データベース エンジンは、オブジェクト 'XYZ$CB1:B1' を見つけることができませんでした。オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください。'XYZ$CB1:B1' がローカル オブジェクトでない場合は、ネットワーク接続を確認するか、サーバー管理者に問い合わせてください。
最後の行の代わりに、次のようなことをしたい
sheetNameString = Conn.Execute("SELECT Join(SheetName) from Book1.xls")
If InStr(sheetNameString,"XYZ1") Then
Set RS = Conn.Execute("SELECT * FROM [XYZ1$B1:B1]")
Else
Set RS = Conn.Execute("SELECT * FROM [XYZ$B1:B1]")
End If