ブラウザのフォームにデータを入力する方法に関して

解決


ペンギンくん  2005-07-11 21:52:26  No: 123418

VB.NETで
Dim data1 as String = "PostNo"
Dim url as string = "http://www********"


Set IE = CreateObject("InternetExplorer.Application")
With IE
.Navigate (url)
.document.Forms(0).Elements(data1).Value = KeyWord1
として実行したいのですが、
data1のところで、ページ内にそういうものはないというような
エラーになってしまいます。

data1内の文字列を直接("PostNo")と指定すると正常に動くのですが、
外部のファイルから読み込んできたいのでそのようにはできません。

ここを変数で指定する方法がありましたら教えて頂きたいです。


ペンギンくん  2005-07-11 21:53:57  No: 123419

KeyWord1についてはPublic変数で別のところで設定してあります。


ねろ  2005-07-11 23:19:07  No: 123420

良くわからないのですが、ヘルプでは
object.elements([index])
となってますね。
取りあえず 
.document.Forms(0).Elements(Val(data1)).Value = KeyWord1
こうするとどうなりますか。


ペンギンくん  2005-07-12 00:06:46  No: 123421

ねろさん、お返事ありがとうございます。
今、VB.NETが出来るパソコンではないので、
家に帰ったら早速試してみます!


魔界の仮面弁士  2005-07-12 00:52:33  No: 123422

> .Navigate (url)
> .document.Forms(0).Elements(data1).Value = KeyWord1
これはNG。
Navigate/Navigate2 した直後に documentプロパティに
アクセスしてはいけません。この時点では、読み込みが完了していない
可能性がありますので、DocumentCompleteイベントが発生するまでは、
document以下のオブジェクトにアクセスしないようにしましょう。

> .document.Forms(0).Elements(data1).Value = KeyWord1
VB.NET ではこのような記述をしてはいけません。VB6なら良いですけど。

.NETからCOMコンポーネントを利用した場合は、最後に
「Marshal.ReleaseComObject メソッド」を呼び出して、
明示的にオブジェクトの解放を行うように心がけてください。
(VB6やVBSなら、何もせずとも、使用後には自動で解放されるのですけれどね)

詳細は、google等で「ReleaseComObject」について調べてみてください。

> data1内の文字列を直接("PostNo")と指定すると正常に動くのですが、
データ型が異なるからです。CObj(data1) を指定するか、もしくは、
data1 そのものを Object型で宣言するようにしましょう。

# Documentオブジェクトは、本来は、VBScriptやJScriptからの操作を
# 前提としているため、String や Integer ではなく、常に「Variant型」の
# パラメータを受け付ける設計になっています。
## COMのVariant型は、.NETにおいては Object型 にマッピングされます。


ペンギンくん  2005-07-12 07:39:56  No: 123423

魔界の仮面弁士さんお返事ありがとうございます。
お返事を参考に下記のようにしたらできました!

   .Navigate(Url)
            Do While .Busy = True
            Loop
            .Visible = True

            Do While .document.ReadyState <> "complete"
            Loop
LocationNameFirst = IE.LocationName
AppActivate(LocationNameFirst)


 .document.Forms(0).Elements(CObj(data1)).value = KeyWord1

↑の動作が間に合わないときがあったので、
ちょうど試行錯誤していたところでしたので、
この件についてもとても助かりました。

ねろさん、魔界の仮面弁士さん。どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加