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

ExcelのVBAで、A1~A10 のセルに入っている数値を下記 URL の「お問い合せ番号」の入力欄に自動でセットして、「検索」のボタンを押したいのですが、方法が分かりません。

http://www2.fukutsu.co.jp/inq/INQJJ120.html

下記のプログラムで表示までは出来るのですが、それから先の入力とボタンクリックの方法が分かりません。
何かアドバイスを頂けると幸いです。

> Dim oIE As Object
>
> 'IE起動
> Set oIE = CreateObject("InternetExplorer.Application")
> oIE.Visible = True
>
> '目的のURLへ
> oIE.Navigate "http://www2.fukutsu.co.jp/inq/INQJJ120.html"
>
> '完全表示まで待つ
> While oIE.Busy: Wend
> While oIE.document.readyState <> "complete": Wend

A 回答 (2件)

#15日から拝見しておりますが、#1 さんからのお返事がないようですので、ちょっと横から口出しさせていただきますね。



 そもそも、#1 さんのご回答は、ちょっと示唆深いように見受けられるのですが、
>例えば~~でしたら
とお書きのように、そのままやってしまうと NG ですね。

>上記の2つを試したのですが、以下のエラーが出ます。
 ちゃんとお示しの URL の html ソース をご覧になりましたか?

 そこには、「name="toino"」なんて記述はありませんよね。

 お示しの URL の場合は、
<FRAME src="INQJJ120.jsp" name="INQJJ120" marginwidth="1">
と書いてあるところが、
>「お問い合せ番号」の入力欄
の実態です。

 実際には、
http://www2.fukutsu.co.jp/inq/INQJJ120.jsp
という ページ になりますが、この ページ の html ソース には、#1 さんがお書きの コード がそのまま出ております。


 ですから、
http://www2.fukutsu.co.jp/inq/INQJJ120.jsp
の ページ を読み込むようにすれば、「oIE.Document.all.toino」が有効になります。


>なお、「 toino 」という名前は、
>10個の入力欄すべてに同じ名前が付けられているので、
>今回の指定方法では特定出来ないような気がするのですが。
 その通り! ちゃんと、ぃぃトコロに気が付いていらっしゃるではないですか。

 「oIE.Document.all.toino」のままでは単なる "[Object]" ですね。
 [デバッグ(D)] - [ウォッチ式の追加(A)...] で、[式(E):] に「oIE.Document.all.toino」を入力して、[OK] してみてください。

 ページ を読み込んだ段階で ウォッチ ウィンドウ を見ると、「oIE.Document.all.toino」の左の「+」を クリック すると、配下に
length 10
Item 1 ~ 10
というものが見てとれます。

 これが
>「お問い合せ番号」の入力欄
ですね。
oIE.Document.all.toino.Item(1)
あるいは、単に
oIE.Document.all.toino(1)
で、実態を掴むことができます。

 ただし、「Item 1 ~ 10」とはなっていますが、配列の引数は「0」から始りますので、「Item 1」は「oIE.Document.all.toino(0)」になります。


 さて、
> 実際には、
http://www2.fukutsu.co.jp/inq/INQJJ120.jsp
>という ページ になります
と書きましたが、お示しの VBA コード の「oIE.Navigate」の後に、この URL を指定してやるのが簡単かとも存じますが、このような作りの ページ(フレームページ)の場合は、
oIE.Document.frames(1)

<FRAME src="INQJJ120.jsp" name="INQJJ120" marginwidth="1">
を掴むことができます。

 従って、お示しの VBA コード のままで行くと、
oIE.Document.frames.Item(1).Document.all.toino(0).Value = "ほげげ"
でイケマスね。

# suffre さん、大きなお節介失礼いたしました。
#  <(_ _)>
    • good
    • 0
この回答へのお礼

DOUGLAS_ さん、ありがとうございます!

ばっちり、目的を果たす事が出来ました! 感謝、感激です!

「ウルトラスーパーベストアンサー」の指定をさせて頂きたい程です。

重ねて、お礼申し上げます。 ありがとうございました。

お礼日時:2011/10/18 13:20

入力は、例えば


<INPUT type="text" size="20" maxlength="13" name="toino" value="">
でしたらnameがtoinoなので、

 oIE.Document.all.toino.Value = "ほげげ"

で、ボタンクリックは
<INPUT type="submit" name="btn1" value="検 索" onClick="return search()">
のnameがbtn1なので、

 oIE.Document.all.btn1.Click

で行けます。
    • good
    • 0
この回答へのお礼

suffre さん、ご回答ありがとうございます。

  oIE.Document.all.toino.Value = "ほげげ"
  oIE.Document.all.btn1.Click

早速、上記の2つを試したのですが、以下のエラーが出ます。

  実行時エラー '438':
  オブジェクトは、このプロパティまたはメソッドをサポートしていません。

何か環境的にすべき事があるのでしょうか?

なお、「 toino 」という名前は、10個の入力欄すべてに同じ名前が付けられているので、今回の指定方法では特定出来ないような気がするのですが。

なにかアドバイスがございましたら、よろしくお願い致します。

お礼日時:2011/10/14 10:17

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