電子書籍の厳選無料作品が豊富!

タイトルのとおり、VBAでAccess2003からExcel2003のセルフォーマットを変更しようとしていますが、Excel上のVBAで利用できるWorksheet-Range-Selectやその他いくつかのメソッドが、Accessからは利用できません(Accessでは"Microsoft Excel 11.0 Object Library"を参照しています)

実現したいのは、AccessからExcelのセルの結合をすること・書式(文字列、日付等)を変更することなのですが、これらのメソッドを利用できないとなると、ほかに方法が思いつきません。

もしご存知でしたらお教えいただければ幸いです。

A 回答 (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
    • good
    • 1
この回答へのお礼

Applicationオブジェクトからの参照なのですね。MSのリンクも大変有用です。有難うございました。大変助かりました。

お礼日時:2006/07/12 00:03

#1>selectメソッドのところでエラーが出ます。

メッセージは「このメソッドは、このオブジェクトではサポートされていない」というようなものです。
関連する部分で、こちらでテストをしてみることができるようなソースを補足していただけますか?
    • good
    • 0
この回答へのお礼

解決しましたのでソースをお渡しするのは見合わせますが、お申し出ありがとうございました。

お礼日時:2006/07/12 00:10

>実現したいのは、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
    • good
    • 0
この回答へのお礼

試してみましたが、確かに使えそうです。ありがとうございました。
いろいろな書き方があるのですね。勉強になりました。

お礼日時:2006/07/12 00:08

私は2002ユーザなので2003について確かなことは言えませんけど、


>Excel上のVBAで利用できるWorksheet-Range-Selectやその他いくつかのメソッドが、Accessからは利用できません
は、何かの勘違いだと思います。
表示からオブジェクトブラウザでライブラリにExcelを選べば、使えるメソッドが確認できます。
おそらく、画面上でメソッドなどが補完されない場合があるのでそれでそう思ったのじゃないですか。
補完がされない場合でも、オブジェクトに応じたメソッドを記述すれば、ちゃんと動作するはずです。

この回答への補足

アドバイスありがとうございます。
ご指摘に関してですが、補完されないだけでなく、selectメソッド直前にブレイクポイントを打って、そこからF8で一行ずつ実行していくと、selectメソッドのところでエラーが出ます。メッセージは「このメソッドは、このオブジェクトではサポートされていない」というようなものです。
補完されないのでスペルを間違えたかと思い、Excelで作成したマクロをコピペしても同じエラーが表示されます。

ちなみに、Rangeで範囲指定後、セルに直接値を放り込むことは可能です。そのため、表示されるエラーメッセージのとおり、Rangeの特定のメソッドが使えないのではないかと思いました。

他に思い当たることがあればお知らせ下さい。

補足日時:2006/07/11 04:43
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!