海外旅行から帰ってきたら、まず何を食べる?

今、EXCEL のVBAを作成していて行き詰ってしまいました。
エクセルのシート(sheet1)に10桁数字が列にいくつかあります(E5からE6,E7へと毎日更新していきます)。
その10桁の数字を1つ選択(セルの数字をクリックするイメージでいます)してあるインターネット上のページの検索欄に自動記入→検索させたいと思っています。
その記入から検索までのおおまかな物は完成したのですが、セルを選んでという所がよくわかりません。
わかりにくい説明ですが、どうぞよろしくお願いいたします。


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub kensaku()
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate ("http://www.○○○○")
i = 0
Do Until ie.busy = False Or i > 10
Sleep (1000)
i = i + 1
Loop
If i > 10 Then
MsgBox ("タイムアウト")
Exit Sub

End If
ie.document.all.Idno.Value = "ここに選択したセルの数字を入れたい"
ie.document.all.Search.Click

End Sub

といった感じです。
私自身は、excel vba はかじった程度でここまでも色々と調べながらやっとたどりつきました。
どうぞ、初心者でもわかりますように、ご説明よろしくお願いいたします。

A 回答 (4件)

#3です


ちょっと説明を端折りすぎました、すいません

対象ワークシートモジュール
処理を行いたい(今回はsheet1)、シートタブを右クリック
一番下の「コードの表示」を選択し、表示されるのがワークシートモジュールです

標準モジュール
このモジュールの下に、Module1、Module2などを作成し
コードを書きます
Sub kensaku()はここにかかれていると思います


理解を深めるために、あえてサンプルを二例

'対象ワークシートモジュール
'こちらはお薦め、ダブルクリックで処理を開始します
'処理対象セルは D1:D10 です
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As
Range, Cancel As Boolean)
'D1:D10以外のセルは処理中止
If Intersect(Range("D1:D10"), Target) Is Nothing Then Exit Sub
'選択セルが空白なら処理中止
If Target.Value = "" Then Exit Sub
'標準モジュールの「sub test」に選択セル情報を渡し処理する
test Target  'ここを変更 kensaku Target
Cancel = True
End Sub

'対象ワークシートモジュール
'こちらはセルを選択するだけで処理を開始します
'処理対象セルは E1:E10 です
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Range("E1:E10"), Target) Is Nothing Then Exit Sub
If Target.Value = "" Then Exit Sub
test Target  'ここを変更 kensaku Target
End Sub


'標準モジュール
Sub test(picup As Range)
MsgBox "選択したセルアドレス:" & picup.Address(0, 0)
MsgBox "選択したセルの値:" & picup.Value
End Sub

新しいファイルで試した方が良いと思います
それぞれをシート及び標準モジュールにコピペ
対象範囲内のセルを選択したり、ダブルクリックしたり
データを入力、削除など処理内容を確認してみてください
これで分るかな?
    • good
    • 0
この回答へのお礼

できました!!!
ありがとうございました!
本当にずっと四苦八苦していたので感激です。
本当にありがとうございまいた。

お礼日時:2009/05/07 18:38

よく分かりませんが


こんな感じ?

'対象ワークシートモジュール
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
kensaku Target
End Sub

Sub kensaku(picup As Range)   '追加
   :
   :
>ie.document.all.Idno.Value = "ここに選択したセルの数字を入れたい"
ie.document.all.Idno.Value = picup.Value  '追加
   :
   :
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
すみません上手くいきませんでした。といいますか、私はまだまだ素人ですので、お答えいただいた内容が上手く盛り込めなかったようです。もしお時間がお許しになりましたら、(今でも十分わかりやすい内容ですが)素人でもわかるような記述でお答えいただけたらうれしく思います。勝手お言い申し訳ありませんがよろしくお願いいたします。

お礼日時:2009/05/07 15:04

InputBoxメソッドを使われてはいかがでしょうか。


下記ページを参考にしてみてください。
解らなければ補足をいれてください。

実は奥が深いInputBox
http://officetanaka.net/excel/vba/tips/tips37.htm

この回答への補足

自分なりにものすごくおしい所までたどりついたのですが、ネットページの検索欄にexcelに書かれた数値でなく undefined と表示されてしまいました。何度も無理をいいますが教えてくださいませ。お願いします。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub セル選択()
Dim buf As Range
Set buf = Application.InputBox(Prompt:="セルを選択してください。", Type:=8)
Range("H2") = buf
End Sub

Sub kensaku()
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate ("http://www.○○○○")
i = 0
Do Until ie.busy = False Or i > 10
Sleep (1000)
i = i + 1
Loop
If i > 10 Then
MsgBox ("タイムアウト")
Exit Sub

End If


ie.document.all.Idno.Value = H2

ie.document.all.Search.Click

End Sub

Sub startネット検索する()

Call セル選択
Call kensaku

End Sub

教えていただいた所を読みこのような感じで作成してみました。
よろしくお願いします。

補足日時:2009/05/07 14:42
    • good
    • 0

>"ここに選択したセルの数字を入れたい"


取りあえず。下記でためしてください。
ie.document.all.Idno.Value = Activecell.value
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
すみません質問がへたくそでした。申し訳ありません。
例えば、sheet1のE5に1234567890という数字があってその数字を選択すると、ie.document.all.Idno.Value =○○ の○○に1234567890という数字が入りネットページ上のIdnoに12567890が自動記入されSearchがクリックされるといった具合になります。
E5がE7やE9の違う数字を調べたい時もありますので、セルをクリックしての選択式でなんとか出来ないかなと思いまして。
どうぞよろしくお願いいたします。

お礼日時:2009/05/07 12:19

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


おすすめ情報