- ベストアンサー
エクセルVBAでのIE操作について
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" 解決する上手い方法が知っている方がいましたら、よろしくお願いします。
- みんなの回答 (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の環境では動作確認できました。
その他の回答 (6)
- cistronezk
- ベストアンサー率38% (120/309)
回答6です。 >回答3です。 またまた失礼しました。回答5の間違いです。大変お粗末さまです。
- cistronezk
- ベストアンサー率38% (120/309)
>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 でもやってみたのですが、 オブジェクトはこのプロパティまたはメソッドをサポートしていません。というエラーがでてしまいます。。
- xls88
- ベストアンサー率56% (669/1189)
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
- xls88
- ベストアンサー率56% (669/1189)
テストしてみました。 提示されたサンプルページを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を起動して処理する必要があるのです。。 よろしくお願いします。
- cistronezk
- ベストアンサー率38% (120/309)
>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 でやってみましたがエラーがでました・・ いろいろ頑張ってみます。
- xls88
- ベストアンサー率56% (669/1189)
URLを教えていただければ試してみますがどうでしょうか。 下記ページが参考になります。 三流君VBAでIE操作 InternetExplorer.Applicationを操作する http://www.ken3.org/cgi-bin/group/vba_ie.asp インターネットエクスプローラ操作編 http://www.happy2-island.com/vbs/cafe02/capter00701.shtml 7.1 IEオブジェクトを作る(IE7編) http://www.happy2-island.com/vbs/cafe02/capter00711.shtml
補足
サンプルページを作りました。 よろしくお願いします。 http://island.geocities.jp/kawamae1023/test.html
お礼
アドバイスとても参考になりました。 おかげで無事解決しました。 ありがとうございました。