- ベストアンサー
ワードの空のアプリケーションを開く方法とSet wdObj = Nothingの意味
- ワードの空のアプリケーションを開く方法とは、マクロを使用して新しいWordアプリケーションを作成して表示することです。Set wdObj = Nothingは、作成したWordアプリケーションのインスタンスを破棄するために使用されます。
- Set wdObj = Nothingは、作成されたWordアプリケーションのインスタンスをメモリから解放し、リソースを解放します。これにより、プログラムの実行中にメモリリークが発生するのを防ぐことができます。
- ただし、ワードのアプリケーションがタスクマネージャーに表示され続けるのは、ワードがバックグラウンドで動作しているためです。ワードを閉じると、タスクマネージャーから消えます。
- みんなの回答 (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 とすることが多いのですが、実際に、手動であれ、マクロであれアプリを終わらせているなら意味はありません。
その他の回答 (1)
- okormazd
- ベストアンサー率50% (1224/2412)
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が非表示になります。
お礼
どうもありがとうございました。
お礼
どうもありがとうございました。