2019年5月7日どうも、takaです。【E-VBA】では今までExcelVBAでAccessやOutlookといった他のOfficeソフトを操作するいわゆる【OLE】を解説してきました。お恥ずかしい話ですが私が未熟だった事もあり間違えた解説をしていた部分がございました。他の解説サイトを見てみると同じような過ちをしているサイト様がいくつかありました。私はVBAを専門に扱う解説サイトとして「間違えたままではいけない」ということで今回は【OLE】についてしっかりと解説していきたいと思います。他のOfficeソフトを操作する(OLE)には2つの方法があるさて、まず他のOfficeソフトを操作する方法は大きく分けて2つの方法があります。参照設定を使う方法です。私が間違えた過ちはこれらの2つの方法を混合して使用していた点です。CreateObject関数と参照設定の違いCreateObject関数は簡単に言えば指定したアプリケーションのオブジェクトを作成して返してくれる関数です。下記のコードはWordをCreateObject関数を使用して起動するコードです。Subそして参照設定を設定した場合のコードはこちらになります。参照設定する方法はこちらを参考にしてください。Wordのインスタンスを作成。Wordのインスタンスを作成。Subこれらは同じ動作をしますがコードは違いますよね?なぜこのようになるのか?しっかりと明記はされていませんが個人的には下記のような特性があります。参照設定されていないブック上では使えないはい、これが一番大きなポイントの違いです。これだけではCreateObject関数のほうがいいんじゃないか?と思われるかもしれませんが、参照設定にもメリットがあります。それはインテリセンスが使用できるということです。インテリセンスとは画像のようなメソッドやプロパティを表示してくれる機能です。ある間違いよくあるのが参照設定を設定しているのにCreateObject関数を使用してオブジェクトを作成しているコードが多いです。動作はしますので【間違い】というのかは迷うところですが。良いことではありません。Word.Application←実際はこれでいい。Word.Application←実際はこれでいい。Sub本サイトも一部のコードがこれと同じことをしてしまっている部分がございます。動作には問題はありませんが、このまま放っておいて良い事ではありませんので、順次修正させていただきます。この場を借りてお詫び申し上げます。結局CreateObject関数と参照設定どちらがいいのか?個人的には【どちらでもいい】が良いと思っておりますが、参照設定を使用したほうが開発は捗る(インテリセンスなど)ので参照設定を使用したほうが良いかもしれません。フォームやコードをVBAに詳しくない方に配布などのをする場合は、わざわざ対象のブックで参照設定をしてもらわないといけないというデメリットがありますので、その様な時はCreateObject関数で参照設定をしないで動作するように作成するのが良いでしょう。@taka_pc1027■YouTubeチャンネル登録ファイルやコードの利用、WEBサイトの利用についてサンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。応用この記事が気に入ったらいいねしよう!最新記事をお届けします。コメントをキャンセルメールアドレスが公開されることはありません。PrivateSubとPublicSubの違いを解説!RECOMMENDこちらの記事も人気です。pvプロフィールどうも本サイト【E-VBA】のtakaと申します!ひょんなことからVBAを学ぶことになった非IT社員です。