• ベストアンサー

EXCEL VBA作成で行き詰りました。助けてください。

今、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 はかじった程度でここまでも色々と調べながらやっとたどりつきました。 どうぞ、初心者でもわかりますように、ご説明よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.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 新しいファイルで試した方が良いと思います それぞれをシート及び標準モジュールにコピペ 対象範囲内のセルを選択したり、ダブルクリックしたり データを入力、削除など処理内容を確認してみてください これで分るかな?

suisu0830
質問者

お礼

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

その他の回答 (3)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

よく分かりませんが こんな感じ? '対象ワークシートモジュール 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

suisu0830
質問者

お礼

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

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

InputBoxメソッドを使われてはいかがでしょうか。 下記ページを参考にしてみてください。 解らなければ補足をいれてください。 実は奥が深いInputBox http://officetanaka.net/excel/vba/tips/tips37.htm

suisu0830
質問者

補足

自分なりにものすごくおしい所までたどりついたのですが、ネットページの検索欄に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 教えていただいた所を読みこのような感じで作成してみました。 よろしくお願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

>"ここに選択したセルの数字を入れたい" 取りあえず。下記でためしてください。 ie.document.all.Idno.Value = Activecell.value

suisu0830
質問者

お礼

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

関連するQ&A

  • VBAからIEの操作

    グーグルをIEで開いてVBA(語句)を検索して見終わったら IEを閉じる作業をしたいのですが、検索窓にVBA(語句)を 入力するところでエラーとなります。初心者ですが、なんとか 勉強したいのでよろしくお願いいたします。 Sub ie_test_Navigate() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.google.co.jp/" IE.document.all.q.Value = "VBA" IE.document.all.btnG.Click If MsgBox("IEを閉じますか?", vbYesNo, "終了確認") = vbYes Then objIE.Quit End If Set objIE = Nothing End Sub

  • VBA IE読み込み出来ないときの処理

    エクセルVBAで IE読み込み完了まで、というサンプルは有るのですが 時間来ても、読み込め無い時 中止の処理ですが、 下記で如何でしょうか(実験が出来ないので、お知恵拝借) さらに、もっと、スマートな方法が有ればご教示ください。 Set IE = CreateObject("internetExplorer.application") url = yobiurl ' "http://admin.blog.fc2.com/control.php?mode=editor&process=new" With IE .Navigate url .Visible = True i = 1 Do While .Busy = True Call Sleep(50) '0.05sec * 400 =20秒 DoEvents i = i + 1 If i > 399 Then .Quit ' End With Set IE = Nothing Exit Sub End If Loop i = 1 Do While .document.ReadyState <> "complete" Call Sleep(50) DoEvents i = i + 1 If i > 399 Then .Quit ' End With Set IE = Nothing Exit Sub End If Loop

  • エクセルでのVBA

    エクセルでVBAを使ってIEで指定のURLを開いて、VBAで指定したWEBフォームにエクセルで指定したセルの値を入力したいのですが、下記のコードを入れるとエラーが出てしまいます。   A1:1-1 or 1-2 or 1-3 B1:月曜日 C1:火曜日 D1:水曜日 上のA1~D1まで入力した上でコマンドボタンをクリックすると、自動的に行うようにしたいです。 Private Sub CommandButton1_Click() Dim objie As Object Set objie = CreateObject("InternetExplorer.application") objie.Visible = True objie.Navigate "http://●●●●/form.html" Dim kubun As String kubun = range("A1") Select Case kubun Case "1-1" call ma1_1 Case "1-2" call ma1_2 Case "1-3" call ma1_3 End select Set objie = Nothing End sub Sub ma1_1() objie.Document.all.form1_1.Value = Range("B1") End Sub Sub ma1_2() objie.Document.all.form1_1.Value = Range("B1") objie.Document.all.form1_2.Value = Range("C1") End Sub Sub ma1_3() objie.Document.all.form1_1.Value = Range("B1") objie.Document.all.form1_2.Value = Range("C1") objie.Document.all.form1_3.Value = Range("D1") End Sub これで実行を押すと、objie 変数が定義されていません。と出てしまいます。このobjieを有効にするにはどうしたよいのでしょうか? わかる方いましたらご教授願います。 よろしくお願いします。

  • EXCEL VBAについて

    EXCEL VBAについて教えてください やりたいことは以下の通りです。 ・全シートJ列1~100行目を検索しアルファベットが含まれるセルが存在すれば 上のセルをコピーする ここまで作ったのですが上手くいきません Sub VBAsample() Dim GYO As Long For GYO = 1 To 100 If Find([a-z], LookAt:=xlPart) Then Cells(GYO, 10).Value = Cells(GYO - 1, 10).Value End If Next GYO End Sub 添削をお願いします

  • Excel VBA Worksheet_Change イベントについて

    Excel VBA Worksheet_Change イベントについて質問です。 セルH8とI8を結合し、入力規則よりリストボックスを配置しました。 本シートにWorksheet_ChangeをVBAで作成しましたが、 セルH8:I8をDeleteすると実行時エラー13が発生します。 If Target = "" then exit sub end if や If Target.value = "" then exit sub end if や If Target <> "" then 処理 end if としても対処できませんでした。 よい対処方法のアドバイスよろしくお願いします。

  • VBAでエクセルからツイッターに投稿

    VBAでエクセルからツイッターに連続投稿したいのですが難しいでしょうか?? 試しに作ってみたVBAです。 'モバイルなら投稿できるかも・・・? Sub tweet() Dim ie As InternetExplorer Dim txtAreaInput As HTMLTextAreaElement Set ie = CreateObject("internetExplorer.Application") 'IEを開く○ ie.Visible = True ie.Navigate "https://mobile.twitter.com/compose/tweet" 'ツイッターを開く○ Do While ie.Busy Or ie.ReadyState < READYSTATE_COMPLETE 'ページの読み込みを待つ○ DoEvents Loop Range("B2").Select '画像ファイルのセルをコピー○しかし連続となるとやり方わからないです。 Selection.Copy Set txtAreaInput = ie.Document.getElementsByName("textarea")(0) 'セルを選択× txtAreaInput.Value = ActiveSheet.Cells(2, 1).Value ObjIE.Document.all("camera-input").Click '画像パスを開く×そもそもカメラボタンが消えている?? SendKeys "^v{ENTER}" '画像ファイルのパスをペーストしエンター×効かない?? For Each Anchor In ie.Document.getElementsByTagName("A") 'ツイートを投稿×ボタンが押せない If Anchor.innerText = " ツイート " Then Anchor.Click Exit For End If Next End Sub

  • Excel VBAのFindメソッドについて

    Excel VBAを勉強中の者です。 Findメソッドで、数字の入ったF5セルからF28セルの範囲から、 1という数字の入ったセルを検索したいと思い Sub test() Dim xRange As Range Set xRange = Range("F5:F20").Find(What:=1, LookIn:=xlValues)   xRange.Select End sub としました。 しかし、このまま検索するとF6セルの12が検索されてしまいます。 他の数字では問題なく、対象の数字の先頭の数字が選択されます。 どうしてでしょうか? よろしくお願いします。

  • Excel VBAで検索結果を取得するにはどうしたらいいですか?

    今、Googleの検索結果をコピーして、Excelに貼り付けたいと思って います。 IEで検索するところまで書けたのですが、それ以上がわかりません。 Sub shutoku() With CreateObject("InternetExplorer.application") .Visible = True .navigate ("http://www.google.co.jp/") While .Busy Or .readyState <> 4 DoEvents Wend .document.all.q.Value = "指定のキーワードを入れる" .document.all.btnG.Click End With End Sub これから先、どう書いたらいいか教えてもらえないでしょうか? よろしくお願いします!

  • EXCEL VBAについて教えてください

    はじめまして。 過去ログに私のやりたいような内容を探していたらこのような下記のエクセルVBAがあったので、教えて頂きたいです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Target.Value = "" Then Exit Sub x = Target.Value With Application .ScreenUpdating = False .EnableEvents = False .Undo y = Target.Value Target.Value = x + y .EnableEvents = True .ScreenUpdating = True End With With Cells(ActiveSheet.Rows.Count, "C").End(xlUp) .Offset(1, 0).Value = x .Offset(1, 1).Value = Time() End With End Sub A1に入力するたびに同一セルに加算。 A1をクリアできる。 C列に入力履歴、D列に入力時間を記録。 If Target.Address <> "$A$1" Then Exit Sub の$A$1を変えることによって他のセルにも設定できる。 と、いう内容なのですが、これをたとえば同一シートのA1~E10のセルとA12~E22にも同じよう別々に処理できるように設定したいのですが、どのようにすればいいのでしょうか?ちなみにA11~E11とA23~E23は合計を表示するセルにしたいです。 Excelのバージョンは2003です。 よろしくお願い致します

  • エクセル VBAについて

    はじめて質問するのですが(閲覧もほとんどしていませんでした)、 ネチケット違反等がありましたら申し訳ありません。 エクセルVBAで下記のようなことをしたいのですが、 できずに困っています。 A列で文字が入っているセルを、上から下まで確認し、 『在庫』という文字が入ってるセルの下2行に空白行を入れたく 思っています。 とりあえず自分で作ってみたのは、 ******************** Sub 行挿入() Dim i As Integer Dim a As String For i = 1 To 1000 Cells(1, i).Value = a If a = "在庫" Then Rows(i + 1).Insert Rows(i + 2).Insert Else End If Next i End Sub ************************************ 初心者で申し訳ないのですが、上記を実行すると、 アプリケーション定義&オブジェクト定義というエラーが出ます。 何がいけないのでしょうか? 恐れ入りますが、教えてください。 よろしくお願い致します。

専門家に質問してみよう