- ベストアンサー
VBAでAccessからExcelのセルフォーマットを変更するには?
タイトルのとおり、VBAでAccess2003からExcel2003のセルフォーマットを変更しようとしていますが、Excel上のVBAで利用できるWorksheet-Range-Selectやその他いくつかのメソッドが、Accessからは利用できません(Accessでは"Microsoft Excel 11.0 Object Library"を参照しています) 実現したいのは、AccessからExcelのセルの結合をすること・書式(文字列、日付等)を変更することなのですが、これらのメソッドを利用できないとなると、ほかに方法が思いつきません。 もしご存知でしたらお教えいただければ幸いです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> Excel上のVBAで利用できるWorksheet-Range-Selectやその他いくつかのメソッドが、 > Accessからは利用できません 使えます。が、Access(など他のアプリ)から使う場合は、Application オブジェクト から参照する必要があります。 コード例としては、 Visual Basic を使用して Microsoft Excel を自動化する方法 http://support.microsoft.com/kb/219151/ja こちらが参考になると思います。 また、以下についても参照してください。 ダウンロード センターで入手可能な Microsoft Office 2000 オートメーションのヘルプ ファイル http://support.microsoft.com/kb/260410/ja
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>selectメソッドのところでエラーが出ます。メッセージは「このメソッドは、このオブジェクトではサポートされていない」というようなものです。 関連する部分で、こちらでテストをしてみることができるようなソースを補足していただけますか?
お礼
解決しましたのでソースをお渡しするのは見合わせますが、お申し出ありがとうございました。
- mamappi82
- ベストアンサー率0% (0/9)
>実現したいのは、AccessからExcelのセルの結合をすること・書式(文字列、日付等)を変更することなのですが、これらのメソッドを利用できないとなると、ほかに方法が思いつきません。 私も、2,3日前似たような質問を出しました。 その時教えてもらった回答で記述した一部を下記に記述します。 私はこれで書式変更、上手くいってます。 参考になればよいですが・・・。(参考にならなかったらごめんなさい。) Dim xls As Object Set xls = CreateObject("Excel.Sheet") xls.Application.Columns("A:O").NumberFormatLocal = "@" xls.Application.Columns("Q:S").NumberFormatLocal = "@" xls.Application.Columns("W:W").NumberFormatLocal = "\#,##0;\-#,##0" xls.Application.Quit Set xls = Nothing
お礼
試してみましたが、確かに使えそうです。ありがとうございました。 いろいろな書き方があるのですね。勉強になりました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
私は2002ユーザなので2003について確かなことは言えませんけど、 >Excel上のVBAで利用できるWorksheet-Range-Selectやその他いくつかのメソッドが、Accessからは利用できません は、何かの勘違いだと思います。 表示からオブジェクトブラウザでライブラリにExcelを選べば、使えるメソッドが確認できます。 おそらく、画面上でメソッドなどが補完されない場合があるのでそれでそう思ったのじゃないですか。 補完がされない場合でも、オブジェクトに応じたメソッドを記述すれば、ちゃんと動作するはずです。
補足
アドバイスありがとうございます。 ご指摘に関してですが、補完されないだけでなく、selectメソッド直前にブレイクポイントを打って、そこからF8で一行ずつ実行していくと、selectメソッドのところでエラーが出ます。メッセージは「このメソッドは、このオブジェクトではサポートされていない」というようなものです。 補完されないのでスペルを間違えたかと思い、Excelで作成したマクロをコピペしても同じエラーが表示されます。 ちなみに、Rangeで範囲指定後、セルに直接値を放り込むことは可能です。そのため、表示されるエラーメッセージのとおり、Rangeの特定のメソッドが使えないのではないかと思いました。 他に思い当たることがあればお知らせ下さい。
お礼
Applicationオブジェクトからの参照なのですね。MSのリンクも大変有用です。有難うございました。大変助かりました。