dポイントプレゼントキャンペーン実施中!

vbaでの参照設定を聞きたいです現在下記のように設定しプログラミングしています。
Dim ie As InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "URL"
と設定し
「ie.」と入力すれば
Document~・・・等が表示されますが、
「ie.Document.」と入力してもそのあとに続く命令文が出てきません。
.getElementById~・・・などが表示したいのですがどのような設定にすれば可能でしょうか?
画像に参照設定を張り付けておきます。そちらも確認しご指導ください。

「vbaでの参照設定を聞きたいです」の質問画像

A 回答 (4件)

#3さんのご指摘のとおりだと思いますが、もう少し加えさせていただきます。



getElementById
おっしゃっているのは、インテリセンスのことだと思いますが、
本来、それは、IEオブジェクトの配下ではないのではありませんか?オブジェクトブラウザをご覧になれば分かります。

(HTMLDocument をフルに書くと以下のなります)
Sub TestHTML()
Dim doc As New MSHTML.HTMLDocument '参照設定
With doc
  Set obj = .getElementById("First")  '←インテリセンスが出ます。
End With
End Sub

つまり、参照設定のリストの中の HTMLDocument になるのですが、
これをわざわざ参照設定しなくても、使えるわけです。

実践的に、IEオブジェクト(オートメーション)のままで、HTMLDocument に乗せないのは、IEオブジェクトそのものが反応してくれるからです。OffLineにしたら、HTMLDocument に乗せないと反応してくれません。ただし、HTMLDocument を使う意味は、そういう目的ではなく、Document を再びオブジェクトにするためだと理解しています。

コーディングの際は、概ね、OffLineですから、インテリセンスはあまりアテにしないほうがよいと思います。ちなみに、私の場合は、スペル・ミスするので、いくつか頻繁にでるものは、テンプレートのショートカットにして出せるようにしています。

オブジェクトブラウザの添付画像も用意しましたが、#3さんが出していただいておりますので、割愛しました。
    • good
    • 0

こんにちは


先日も、似たような疑問が出されていたようです。
https://oshiete.goo.ne.jp/qa/9626847.html

エディタの仕組みは知りませんので、以下は推測での回答ですが・・・

「ie.」などの入力の際にヒントで表示されるのは、参照設定をしているオブジェクトモデルで定義されている内容と思われます。
ご提示のコードの場合、ieは
 Dim ie As InternetExplorer
として設定されていますので、オブジェクトブラウザ(添付図上段)の内容が表示されます。
試しに、参照設定でInternet Controlsのチェックを外してみると、ご提示のコードのままでは、実行時にDimで参照エラーが出ます。しかし、この宣言を
 Dim ie As Object
に変えることで、参照設定していなくても動作はします。
ただし、この場合は編集時に「ie.」と入力してもヒント表示はされません。

さて、上記のオブジェクトブラウザで見てみると、ie.Documentは読み取り専用のプロパティとして設定されています。
(実際の内容はドキュメントオブジェクトなので、操作等できますが…)

では、次に
 Dim ie As InternetExplorer
 Dim doc As HTMLDocument
と設定しておいて、
 Set doc = ie.Document
とすると、「doc.」と入力すれば、添付図下段で設定されている内容(getElementByIdなど)が表示されるようになります。
同じことですが、
 Dim doc As Object
の場合は、表示されません。

想像ですが、エディタは(コード編集時は実行しているわけではないので)、変数の宣言を見て、そのオブジェクトの参照設定で定義されている内容を表示しているだけと思います。
それなので、ヒント表示を出したければ、少々面倒でも参照設定で読み込んだオブジェクトとして宣言しておく必要がありそうです。(ご質問の場合はHTMLDocument)

あくまでも推測ですので、詳しい方の回答がつくのを待った方が良いと思います。


余談ですが、実行時にオブジェクトのプロパティの存在情報を抜き出す方法が以下にありましたので、ご参考まで。
http://www.accessclub.jp/bbs5/0044/vba14224.html
「vbaでの参照設定を聞きたいです」の回答画像3
    • good
    • 0

試していませんが、使い方が違うようですね。



InternetExplorerオブジェクトのDocumentプロパティ
http://www.vba-ie.net/ieobject/document.html
    • good
    • 0

基本的には「Microsoft Internet Controls」が参照設定されているので問題は無いと思います。



もしかしたらですが「Sub ○○」~「End Sub」以外でお試ししていませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!