プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

VBAでWEB上の入力項目に値をいれたいのですがフォームのタイプがhiddenにはどのようにいれたらよいでしょうか?

WEB上では
(1)「選択」ボタンを押す。
(2)別の画面が開き、そこで、値を選択してOK
(3)元の画面に戻ると(2)の値が反映されている。

WEBのソース的にみると
(1)の状態
<TD bgcolor="#cccccc">
<INPUT type="image" name="s_otherto" alt="選択" src="/image/s_choice.gif" border="0">
</TD>

(2)別の画面で値を選択

(3)の状態
<TD bgcolor="#cccccc">
<INPUT type="image" name="s_otherto" alt="選択" src="/image/s_choice.gif" border="0">
<INPUT type="hidden" name="otherto" value="(2)で選択したID"><FONT size="2">(2)で選択した個人名</FONT>
</TD>

やりたいことは、今は、手で、(1)~(3)を実行しているのですが、
VBAでどのようにしたら、自動で
(1)の状態から(3)の(<INPUT type="hidden" name="otherto" value="(2)で選択したID"><FONT size="2">(2)で選択した個人名</FONT>)が追加された状態にするにはどのようにしたらよいのでしょうか?

typeがtextの場合は、
objIE.Document.getElementsByName("memo")(0).Value = "文章"
で入れれることがわかったのですが、
objIE.Document.getElementsByName("otherto")(0).Value するとエラーが出ます。。。

お手数ですがよろしくお願いします。

A 回答 (2件)

objIE.Document.getElementsByName("otherto")


↑これはオブジェクトです。
(1)の時まだありません。

(2)の処理を施し

(3)で初めて現れるオブジェクトです。


※Value参照で落ちているのではない
※objIE.Document.getElementsByName("otherto")(0)という配列が存在していないのに、0番目を参照しているから落ちている
という事を理解しましょう


オブジェクト参照は、こまめに変数にセットしてあげると、どこで落ちているかがわかりやすくなりますよ。



「otherto」などを作成して、TDに追加してあげないといけません。


Dim l_htmDoc  As Object
Set l_htmDoc = objIE.Document

Dim l_objImg  As Object
Dim l_tblTD   As Object

'イメージを取得
Set l_objImg = l_htmDoc.getElementsByName("s_otherto")(0)
'イメージの親のTDを取得
Set l_tblTD = l_objImg.parentNode

'TDにHIDDENを追加
Dim l_htmHdn  As Object
Set l_htmHdn = l_htmDoc.createElement("input")
With l_htmHdn
  .Type = "hidden"
  .Name = "otherto"
  .Value = "(2)で選択したID"
End With
Call l_tblTD.appendChild(l_htmHdn)

'TDにFONTを追加
Dim l_htmFont  As Object
Set l_htmFont = l_htmDoc.createElement("font")
With l_htmFont
  .Size = "2"
  .innerText = "(2)で選択した個人名"
End With
Call l_tblTD.appendChild(l_htmFont)
    • good
    • 0
この回答へのお礼

本当に本当に本当に本当に。。。

大感謝です!!!!!!!!!!!!!!!

ありがとうございます!!!!!!!!!!できました!

お礼日時:2010/04/14 10:13

要するにサブウィンドウの設定値を


開いた親ウィンドウの隠し項目に反映するすればいいのですね。
ちなみに質問内容に<FORM></FORM>タグが無いですけど???

サブウィンドウの選択画像ボタンが押下された時に
下記処理をする。
window.opener.document.FORM名.otherto.value="選択ID";
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


人気Q&Aランキング