• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:このマクロの意味について教えてください。)

ワードの空のアプリケーションを開く方法とSet wdObj = Nothingの意味

このQ&Aのポイント
  • ワードの空のアプリケーションを開く方法とは、マクロを使用して新しいWordアプリケーションを作成して表示することです。Set wdObj = Nothingは、作成したWordアプリケーションのインスタンスを破棄するために使用されます。
  • Set wdObj = Nothingは、作成されたWordアプリケーションのインスタンスをメモリから解放し、リソースを解放します。これにより、プログラムの実行中にメモリリークが発生するのを防ぐことができます。
  • ただし、ワードのアプリケーションがタスクマネージャーに表示され続けるのは、ワードがバックグラウンドで動作しているためです。ワードを閉じると、タスクマネージャーから消えます。

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

  • ベストアンサー
回答No.2

こんにちは 何か、すごく難しくしている質問なのですが、 この部分。  Set wdObj = Nothing >だったら何のために Set wdObj = Nothingはあるのでしょうか? 端的に言うと、そのコードでは、何の意味がないですね。 実験的なコードはあくまでも、実験の域を越えないというべきかもしれません。 '// Sub Test1()  Dim wdObj As Word.Application  Dim wdDoc As Word.Document  Set wdObj = New Word.Application  wdObj.Visible = True '←一瞬で行うので意味はない  Set wdDoc = wdObj.Documents.Add  wdDoc.Range.Text = "ABC"  wdObj.ActiveDocument.SaveAs2 ("Test1225.docx")  wdObj.Quit  Set wdObj = Nothing '←上記でQuitを使っているので、ここは生きていない。 End Sub '// もともと、Set wdObj = Nothing というのは、メモリにオブジェクトとしてWord が残った時に時に、開放するものです。上記のコードのような場合は、形式的に、Set wdObj= Nothing とすることが多いのですが、実際に、手動であれ、マクロであれアプリを終わらせているなら意味はありません。

tlnadcmv
質問者

お礼

どうもありがとうございました。

その他の回答 (1)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

Set wdObj = New Word.Applicationは、 新しいWord.Applicationをオブジェクト変数wdObjに代入し(割り当て)ています。これで、いちいち元のオブジェクトを指定しなくてもWdObjという変数でオブジェクトを指定できるようになります。それで、 wdObj.Visible = True で、Word.Applicationすなわち、Wordが見えるようになります。 Set wdObj = Nothingは、 この代入(割り当て)を解除します。だから、これ以降はwdObjでWord.Applicationの指定ができなくなります。 VBAでwdObjをWord.Applicationとして使わなければ、何の変りもありません。以後、wdObjでWord.Applicationを使わなければ、解除して、システム リソースとメモリ領域を解放したほうがいいでしょう。ただし、質問のSubでは、wdObjがプロシージャレベルの宣言なので、Endで解放されてしまうとは思いますが。 次のように順序を入れ換えれば、エラーになります。 Sub Test() Dim wdObj As Word.Application Set wdObj = New Word.Application Set wdObj = Nothing wdObj.Visible = True End Sub なお、 Sub Test() Dim wdObj As Word.Application Set wdObj = Word.Application Word.Application.Visible = True Set wdObj = Nothing End Sub これで、wdObj とWord.Applicationが同等とわかるでしょう。ただし、これは新しいWordを開いていないので、現在のWordを表示しますから何も変わらないように見えるでしょう。 Word.Application.Visible = False とすれば、現在のWordが非表示になります。

tlnadcmv
質問者

お礼

どうもありがとうございました。

関連するQ&A