プロが教えるわが家の防犯対策術!

IEの中のフォームのデータセットに関してわからないところがあり、どうか力をお貸しください。よろしくお願いします。

Dim mo As Integer
Dim atai As Integer
Dim basyo As String

For mo = 1 To 10
basyo = "form1" & Cells(7, mo)
atai = Cells(9, mo)

objie.Document.all.basyo.Value = atai
Next

のような感じにしたいのですが、どうしてもエラーがでてしまい、先にすすめず困っています。

ネットで探して試してはみたのですが、やはりエラーがでてしまいます・・
objie.Document.parentWindow.execScript "document.all." & basyo & ".Value = " & atai, "VBScript"

解決する上手い方法が知っている方がいましたら、よろしくお願いします。

A 回答 (7件)

回答3です。



>objie.Document.Item(basyo).Value = atai
>でもやってみたのですが、
>オブジェクトはこのプロパティまたはメソッドをサポートしていません。というエラーがでてしまいます。objie.Document.Item(basyo).Value = atai

失礼しました。
objie.Document.all.Item(basyo).Value = atai
と書いたつもりでした。「all」が抜けていました。

しかし、私の環境ではそれでもエラーになりました。
objie.Document.all.Item("form1_1").Value = atai
ならOKでも
basyo="form1_1"
objie.Document.all.Item(basyo).Value = atai
と、変数を使うとエラーになりました。

原因は不明ですが、代案として
objIE.Document.getElementsByName(basyo).Item(0).Value = atai
ではいかがでしょう?こちらの2003の環境では動作確認できました。
    • good
    • 0
この回答へのお礼

アドバイスとても参考になりました。
おかげで無事解決しました。
ありがとうございました。

お礼日時:2009/09/16 00:18

回答6です。



>回答3です。
またまた失礼しました。回答5の間違いです。大変お粗末さまです。
    • good
    • 0

>objie.Document.GetElementByID("basyo").Value = atai


・・・
>でやってみましたがエラーがでました・・

GetElementByID関数は、その名前から判るように、引数にID属性値を指定します。「objie.Document.GetElementByID("basyo")」では、「"form1" & Cells(7, mo)」というIDのエレメントではなく、「basyo」というIDのエレメントを探してます。
「objie.Document.GetElementByID(basyo)」としてください。ただし、
http://island.geocities.jp/kawamae1023/test.html
を見るとinputタグにはname属性値はありますが、ID属性値はありませんよね。なので、GetElementByIDは使えません。

名前の重複がないなら、すでに回答3で示されているように
objie.Document.Item(basyo).Value = atai
となります。「objie.Document.Item("basyo")」ではありませんのでご注意ください。

この回答への補足

いろいろ、アドバイスありがとうございます。
名前の重複はないので、
objie.Document.Item(basyo).Value = atai
でもやってみたのですが、
オブジェクトはこのプロパティまたはメソッドをサポートしていません。というエラーがでてしまいます。。

補足日時:2009/09/15 14:41
    • good
    • 0

getElementsByTagNameを使ってみました。



Sub test2()
Dim myWind As Object
Dim myTag As Object
Dim myUrl As String
Dim myAry As Variant
Dim i As Integer

myUrl = "http://island.geocities.jp/kawamae1023/test.html"
myAry = Array("あ", "い", "う", "え", "お")
For Each myWind In CreateObject("Shell.Application").Windows
With myWind
If .locationURL = myUrl Then
Set myTag = .Document.getElementsByTagName("input")
For i = 0 To myTag.Length - 1
If myTag.Item(i).Name Like "form1_*" Then
myTag.Item(i).Value = myAry(i)
MsgBox myTag.Item(i).Name & " : " & myTag.Item(i).Value
End If
Next i
Exit For
End If
End With
Next myWind
Set myTag = Nothing
End Sub
    • good
    • 0

テストしてみました。


提示されたサンプルページをIEで表示してからマクロを実行してください。

Sub test1()
Dim myWind As Object
Dim myUrl As String
Dim myAry As Variant
Dim i As Integer

myUrl = "http://island.geocities.jp/kawamae1023/test.html"
myAry = Array("あ", "い", "う", "え", "お")
For Each myWind In CreateObject("Shell.Application").Windows
With myWind
If .locationURL = myUrl Then
For i = 1 To 5
.Document.all.Item("form1_" & i).Value = myAry(i - 1)
MsgBox .Document.all.Item("form1_" & i).Value
Next i
Exit For
End If
End With
Next myWind
End Sub

この回答への補足

情報がいろいろ足らずすいません。

Dim objIE As Object

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True

objIE.Navigate "http://island.geocities.jp/kawamae1023/test.html"

上記を入れて1つ1つIEを起動して処理する必要があるのです。。
よろしくお願いします。

補足日時:2009/09/15 13:56
    • good
    • 0

>objie.Document.all.basyo.Value = atai


formタグに値を設定しようとしているのでしょうか?Value属性はありません。inputタグなどの名前を指定すべきでしょう。さらにこの式は、「.basyo」というName属性を持つタグに値を入れています。「"form1" & Cells(7, mo)」に値を入れることにはなっていません。

ということで、二重に間違っています。正しいやり方は
http://www.ken3.org/cgi-bin/group/vba_ie_form.asp
などを参考にしてください。

もし、id属性が設定されているなら、
objie.Document.GetElementByID("対象タグのID").Value = atai
で大丈夫なはずです。

この回答への補足

Dim mo As Integer
Dim atai As Integer
Dim basyo As String

For mo = 1 To 10
basyo = "form1" & Cells(7, mo)
atai = Cells(9, mo)

objie.Document.GetElementByID("basyo").Value = atai
Next

でやってみましたがエラーがでました・・
いろいろ頑張ってみます。

補足日時:2009/09/15 13:12
    • good
    • 0

URLを教えていただければ試してみますがどうでしょうか。



下記ページが参考になります。
三流君VBAでIE操作 InternetExplorer.Applicationを操作する
http://www.ken3.org/cgi-bin/group/vba_ie.asp
インターネットエクスプローラ操作編
http://www.happy2-island.com/vbs/cafe02/capter00 …
7.1 IEオブジェクトを作る(IE7編)
http://www.happy2-island.com/vbs/cafe02/capter00 …

この回答への補足

サンプルページを作りました。
よろしくお願いします。

http://island.geocities.jp/kawamae1023/test.html

補足日時:2009/09/15 10:26
    • good
    • 0

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