- ベストアンサー
ExcelVBAマクロでの変数の宣言エラーについて
初歩的な質問になりますが、ExcelVBAマクロで変数の宣言「Dim wdObj As New Word.Application」のエラーについて確認させてください。 変数の宣言「Dim wdObj As New Word.Application」がExcel2007以前では使えないようで、『ユーザ定義型は定義されてません。』というエラーがExcel2007以前で起きます。 Excel2010では問題なく動作しています。 Excel2007以前でも動作する方法をご教授いただけますでしょうか。 お手数おかけしますが、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >『ユーザ定義型は定義されてません。』というエラーがExcel2007以前で起きます。 #1さんのご指摘で合っていると思います。正しく、参照設定されているか確認してください。参照設定の選択が間違っている可能性が高いです。ただし、Excel 2007以降の参照設定で作られたファイルは、下位バージョンでは、参照設定内にエラー(×)が出ているはずです。逆の下位バージョンで作ったものは、上位バージョンで参照設定が通ったような気がします。(未確認) 以下の話は、少し事情が違います。 >Dim wdObj As New Word.Application >Excel2007以前では使えないようで 以下のTest2()でも問題なく開けます。 これは、いきなりインスタンスを作るということだと思います。私は、悪いとは思わないけれども、VBAプログラマには、その方法は、あまり好まれないようです。Test1()の方が良いようです。なぜかというと、省メモリだからです。マクロが終わったら、メモリから外すからです。メモリというのは、PCの物理メモリのことではなく、Officeで、それぞれの機能に分配されている、それぞれのメモリのことです。 '//例 Sub Test2() Dim wdObj As New Word.Application With wdObj .Visible = True .WindowState = wdWindowStateMiminimize .Documents.Open "C:\Users\・・・・\Documents\Sample.doc" .Activate End With End Sub '// Sub Test1() '従来の書き方 Dim wdObj As Word.Application Set wdObj = New Word.Application '・・・・ Set wdObj = Nothing 'オブジェクトを空にする End Sub
その他の回答 (2)
- sample_
- ベストアンサー率76% (20/26)
Sub SampleCode() Dim wdObj As Object Set wdObj = CreateObject("Word.Application") 'ヽ(´ー`)ノここに何か書いて。 Set wdObj = Nothing End Sub Newが使えるには、ExcelVBAとしてもともと備わっている場合か 参照設定で適切なものにチェックが入っている場合利用することが可能になるのですが・・・ そんなことせずに、CreateObjectで生成してしまうのでよいと思います。
お礼
返事が遅くなり、申し訳ございません。 CreateObjectで生成する方法もあったんですね。 再度見直しをしてみます。 色々とありがとうございました。
- watabe007
- ベストアンサー率62% (476/760)
Microsoft Word ** Object Library を参照設定
お礼
返事が遅くなり、申し訳ございません。 アンサーを参照設定の件、再度見直しをしてみます。 色々とありがとうございました。
補足
早速のご返事ありがとうございます。 Microsoft Word ** Object Library の参照設定はチェックボックスをONにしておりますが、うまく動作出来ないようです。宣言文のNewという文字に問題がありそうで2行に分けたほうが良さそうですがどのように分けたら良いでしょうか。 以上、お手数をおかけしますがよろしくお願いいたします。
お礼
返事が遅くなり、申し訳ございません。 メモリの件、勉強になりました。 参照設定の件、再度見直しをしてみます。 色々とありがとうございました。