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

解決済みの質問

VBAでAccessからExcelのセルフォーマットを変更するには?

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

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

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

投稿日時 - 2006-07-11 00:47:05

QNo.2268358

困ってます

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

> 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

投稿日時 - 2006-07-11 07:51:54

お礼

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

投稿日時 - 2006-07-12 00:03:58

ANo.2

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

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

回答(4)

ANo.4

#1>selectメソッドのところでエラーが出ます。メッセージは「このメソッドは、このオブジェクトではサポートされていない」というようなものです。
関連する部分で、こちらでテストをしてみることができるようなソースを補足していただけますか?

投稿日時 - 2006-07-11 12:47:36

お礼

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

投稿日時 - 2006-07-12 00:10:34

ANo.3

>実現したいのは、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

投稿日時 - 2006-07-11 10:40:31

お礼

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

投稿日時 - 2006-07-12 00:08:33

ANo.1

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

投稿日時 - 2006-07-11 01:41:41

補足

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

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

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

投稿日時 - 2006-07-11 04:43:55

あなたにオススメの質問