みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

ExcelVBAマクロでの変数の宣言エラーについて

初歩的な質問になりますが、ExcelVBAマクロで変数の宣言「Dim wdObj As New Word.Application」のエラーについて確認させてください。
変数の宣言「Dim wdObj As New Word.Application」がExcel2007以前では使えないようで、『ユーザ定義型は定義されてません。』というエラーがExcel2007以前で起きます。
Excel2010では問題なく動作しています。
Excel2007以前でも動作する方法をご教授いただけますでしょうか。

お手数おかけしますが、よろしくお願いいたします。

投稿日時 - 2012-10-17 18:13:53

QNo.7753129

すぐに回答ほしいです

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

こんにちは。

>『ユーザ定義型は定義されてません。』というエラーが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

投稿日時 - 2012-10-18 11:27:01

お礼

返事が遅くなり、申し訳ございません。

メモリの件、勉強になりました。
参照設定の件、再度見直しをしてみます。
色々とありがとうございました。

投稿日時 - 2012-11-01 12:07:13

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

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

回答(3)

ANo.2

Sub SampleCode()
Dim wdObj As Object
Set wdObj = CreateObject("Word.Application")

'ヽ(´ー`)ノここに何か書いて。

Set wdObj = Nothing
End Sub

Newが使えるには、ExcelVBAとしてもともと備わっている場合か
参照設定で適切なものにチェックが入っている場合利用することが可能になるのですが・・・
そんなことせずに、CreateObjectで生成してしまうのでよいと思います。

投稿日時 - 2012-10-17 22:11:51

お礼

返事が遅くなり、申し訳ございません。

CreateObjectで生成する方法もあったんですね。
再度見直しをしてみます。
色々とありがとうございました。

投稿日時 - 2012-11-01 12:08:08

ANo.1

Microsoft Word ** Object Library を参照設定

投稿日時 - 2012-10-17 19:33:50

補足

早速のご返事ありがとうございます。
Microsoft Word ** Object Library の参照設定はチェックボックスをONにしておりますが、うまく動作出来ないようです。宣言文のNewという文字に問題がありそうで2行に分けたほうが良さそうですがどのように分けたら良いでしょうか。
以上、お手数をおかけしますがよろしくお願いいたします。

投稿日時 - 2012-10-17 21:26:39

お礼

返事が遅くなり、申し訳ございません。

アンサーを参照設定の件、再度見直しをしてみます。
色々とありがとうございました。

投稿日時 - 2012-11-01 12:08:47

あなたにオススメの質問