こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESSのVBAについて

ACCESSのVBAを使って、データの集計・分析などをしてEXCELに出力、さらにそのEXCELを少しいじる、←このVBAをVBSで実行 といった事をしていたのですが、
会社の端末が一部Office2003から2010に変わったため、参照設定に不具合が出てきました。
内容は、元々2003で作成されたデータベースを2010で開くとVBAの参照設定が「Microsoft Access 11.0 Object Library」だったものは「Microsoft Access 14.0 Object Library」に変わるのですが、
「Microsoft Excel 11.0 Object Library」は変更されずに参照不可になってしまいます。
以前、別のところで同様の質問をした際に、
→「参照設定」をして、コードを作成したあと、コードに使われている定数を全部調べ上げて、変数宣言のコードを作成し、
参照設定のチェックを外して、宣言のコードを追加する、ということで、参照設定の対策をします。
といった回答を頂いたのですが、いまいち理解できていません。
以下のコードをEXCELの参照設定を外しても動くようにするにはどのようにしたら良いのでしょうか?よろしくお願いします。

Sub TEST()

Dim xls As Excel.Application
Dim wb As Excel.Workbook

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "TEST", "C:\TEST.xls", True

Set xls = CreateObject("Excel.Application")
Set wb = xls.Workbooks.Open("C:\TEST.xls")

With xls
.Sheets("Sheet1").Select
.Range("A1").Value = "成功"
.Visible = True
End With

End Sub

投稿日時 - 2012-08-02 15:44:42

QNo.7623455

困ってます

質問者が選んだベストアンサー

Dim xls As Excel.Application
Dim wb As Excel.Workbook



Dim xls As Object
Dim wb As Object

で宣言してあげれば良いのでは?
⇒参照設定を行なっていれば”Excel”であることは明確になるけど、
参照設定を行なわないから<Object>と宣言して

Set xls = CreateObject("Excel.Application")
Set wb = xls.Workbooks.Open("C:\TEST.xls")

ここで初めて”Excel関連であること”を明らかにしてあげる。

とかでは?

投稿日時 - 2012-08-02 19:04:53

お礼

回答ありがとうございます。ご指摘の通りにしたところ動きました。

投稿日時 - 2012-08-06 15:37:36

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問