VBAを実行すると、
実行エラー424
オブジェクトが必要です。
となってしまいます。
エラーとなっている行は、
.Document.getElementById("q_d").Value = ActiveSheet.Cells(rowno, 1).Value
です。
作成したリストは、以下のようになっています。
Sub MAP住所()
Dim objIE As Object, rowno As Integer
rowno = 1
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
'Google Map起動
.Navigate "http://maps.google.co.jp/"
.Visible = True
Do While (ActiveSheet.Cells(rowno, 1).Value <> "")
'IE待機
Do While .Busy = True
DoEvents
Loop
'住所をテストボックスへ入力
.Document.getElementById("q_d").Value = ActiveSheet.Cells(rowno, 1).Value
'送信ボタンクリック
.Document.forms(0).submit
'次の行
rowno = rowno + 1
Loop
End With
Set objIE = Nothing
End Sub
A列にある住所を読み込んで、グーグルマップに表示するスクリプトになります。
どう直して良いのか、皆目わかりません
御指南願います
A 回答 (11件中1~10件)
- 最新から表示
- 回答順に表示
No.11
- 回答日時:
こんにちは。
Google マップで、仕様としてどこまで用意されているか、
ということさえも俄かには把握できない私です。
(因みに手作業でもマーカー(座標の一時的ブックマーク)の数に制限はあるようです)
これまでの流れに合わせるならば、XML操作での解決を探るとか、
それとも、ご指摘頂いたようにWeb APIなどでの解決を目指す、
ということになるのかと思います。
(HTML操作だけでは解決できないような気がします。断言はできませんが。)
ただ、そういうことになると、元々のご質問とはだいぶ離れてしまいますし、
私がサジェストできるものはもはや残っていない気がします。
解決に適した知識を募る意味で、
"Google マップのマーカー(バルーン)をVBAで設定"
のようなタイトルで、今一度、真っ新な質問を建て直してみては如何でしょう。
力及ばずすみません。
尚、効果的で有用なサポートを続けて下さっているNo.10さんの方から
もう少し、お話を引き出してみるのもきっと質問者さんの力になると思います。
早期の解決を祈りつつ、私はここまで、とさせて頂きます。
頑張ってください。
No.10
- 回答日時:
一応、補足では回答者に Mailは届きませんのでcj_mover さんはお気付きでないかもしれませんね。
面倒でもWeb APIで取り組まれた方がいいのではと。
No.8
- 回答日時:
やりたいことは理解できました。
http://productforums.google.com/forum/#!topic/ma …
とりあえず、
「一つのマップに複数の住所に対応したブックマークを残す」処までです。
ブックマークしたポイントすべてにマーカーを表示する手順(リンク先参照)も
自動化した方がいいでしょうか?
そこまではすぐには(少し勉強しないと)書けないので、
「マーカー表示まで自動化したい」かどうか書いておいて、
回答を待つか、お急ぎなら、別件で質問を立ててみてください。
Sub MAP住所マルチブックマーク()
Dim objIE As Object, rowno As Integer, sngT As Single
' ' InternetExplorer起動
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
' ' Google Map起動
.Navigate "http://maps.google.co.jp/"
' ' IE待機
While .Busy Or .ReadyState <> 4
DoEvents
Wend
.Visible = True
' ' 行番号 初期化
rowno = 1
Do
DoEvents
With .Document.Forms(0)
' ' 住所をテストボックスへ入力
.Item("q").Value = Cells(rowno, 1).Value
' ' 送信ボタンクリック
.Submit
End With
''IE待機
sngT = Timer
While (InStr(.Document.Title, ActiveSheet.Cells(rowno, 1).Value) = 0) And (Timer - sngT < 2)
DoEvents
Wend
' ' 次の行
rowno = rowno + 1
Loop Until (Cells(rowno, 1).Value = "")
End With
Set objIE = Nothing
End Sub
この回答への補足
cj_moverさん、
回答ありがとうございます。
このマクロを実行したところ、10件目までは一つの地図上にマークされましたが、
11件目からは、10件目までの表示は消され、11件以降は1件ずつしかマークされませんでした。
スクリプトをみる限り、そのような制限は見当たらないのですが。
No.7
- 回答日時:
> ひとつのマップ上に、それぞれの住所のマッピングをしたかったのです。
>
> って可能なのでしょうか?
Google マップ については、私は詳しい訳ではありませんので、
簡単な例で手作業での手順など具体的に示してもらうことは可能でしょうか?
Google マップ のヘルプをチラッと覗いてみましたが
「マッピング」という用語や機能に関する解説が見つけられません。
マップ上にマッピング、って私はどういう意味か知らないのです。
どうしたいか解れば、できるだけ、お応えするつもりです。
この回答への補足
Googleマップで住所検索したときに表示される、オレンジ色の風船みたいなポイントのことです。
そのポイントをひとつの地図の上に、複数の検索した住所を置く方法を知りたいのです。
No.6
- 回答日時:
cj_mover さん、お気遣いどうも。
(`・ω・´)ie.Document.Forms(0).Item("q").Value = "東京都"
ie.document.Forms(0).Item("gbqfb").click
などとも書けますね。
VBAなので、DocumentComplete イベントも利用出来ますね。
参考URL:https://gist.github.com/1619670
No.5
- 回答日時:
あ、いや、もしかしたら話が噛み合ってないのかも知れないと思ったもので。
> エラーはなくなりましたが、住所を複数登録して、検索させると、
> 最後の行の住所しか、ブックマークされませんでした。
>
> 私のやりたかったことは、
> 複数の住所をすべてgoogle map上にマップしたかったのです。
原質問のコードと私の提示したコードの処理内容を手作業の手順で説明すると、
IEを開いて、Googleマップを開き、
A列一行めから下へ順に(空セルでない間ループして)
セル値である住所を
Googleマップの検索ボックスに入力して
Googleマップの検索ボタンを押す
(指定した住所の地図が表示される)
以上繰り返しで、必然的に、順次【次のページ】に次の地図を表示する
というものです。
すべての処理が終了すると、"最後の行の住所しか"表示されていませんが、
IE左上の戻るボタン(←左矢印)で直前の地図を表示できます。
(まず↑この点を確認してください。これ↑が出来ていないという理解で
回答No.4を書きましたので。)
つまり地図が重なっている状態、原質問のコードとご質問への
もっとも自然と思える"要求仕様"への解釈に基づいているつもり
だったのですが、、、。
"複数の住所をすべてgoogle map上にマップ"というのは、ひょっとして、
IE上の複数のタブに一件ずつ、住所に対応した地図を表示して
タブの切替操作だけで複数の地図の表示を切り替えるようにしたい、
ということだったりします?
それとも
複数のIEを立ち上げて、複数のウィンドウに一件ずつ、住所に対応した地図を表示して
ウィンドウの切替操作だけで複数の地図の表示を切り替えるようにしたい
とか?
これら、それぞれにまったくアプローチが異なりますので、その場合は、
求める完成形がどんなものか、はっきりと書いてくださいね。
現在のものより難しくはなりますけれど。
当初の理解であっていた場合は、
きちんと地図が表示されないうちに次の地図をコマンドしてしまう、
つまり処理能力よりもコマンドが急ぎすぎている状態だと、
ページが追加されずに次々上書きされていくような形で、
"最後の行の住所"に対応した地図ひとつだけしか読み込まれていない
という結果になることも十分に考えられます。
回答No.4はその対策の一例です。
そもそもIE操作は非同期なので、
いつ終るか判らない処理を
終っていることが見込まれる時間まで待機するとか
終っているかどうかを何度も問い合わせながら待機したりして
次の操作へ順番通り進める工夫をしなければなりませんから、
ある程度調整を加えていかないとうまく行かない面も多々あるものです。
#話が噛み合っていたなら、このレスは杞憂、棄て置いて結構ですので。
この回答への補足
cj_moverさん、回答ありがとうございます。
まず、戻るボタンで、マッピングされていることはできています。
ただ、私のやりたかったことは、
ひとつのマップ上に、それぞれの住所のマッピングをしたかったのです。
それって可能なのでしょうか?
No.4
- 回答日時:
回答No.2:補足欄へのレスです。
私の環境では、No.1のコードで300回以上失敗無しなので、
未知の環境に合わせて手直しするのは自信持てない面もありますが、
考えられる箇所に待機を追加してみました。
提示のコードに他の処理を書き加えている場合は、
その中身によって適切な対応は変わる場合もあるかも知れませんけれど。
While Timer - sngT < 0.1
うまくいかなければ、0.1より大きめに書き換えることで、差し当た、
対応してみてください。
せっかくNo.3さんがIDを書いてくれているので、
getElementById() を使う場合の記述もメモとして添えておきますね。
今回は時間調整にTimer()関数を使っていますが、興味おありでしたら
APIのSleep関数の使い方とかも覚えていくとよいと思います。
とりあえあず、ここまでです。
Sub MAP住所()
Dim objIE As Object, rowno As Integer, sngT As Single
rowno = 1
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
'Google Map起動
.Navigate "http://maps.google.co.jp/"
.Visible = True
'IE待機
While .Busy Or .readyState <> 4
DoEvents
Wend
Do
'住所をテストボックスへ入力
.document.activeElement.Value = ActiveSheet.Cells(rowno, 1).Value
'.document.getElementById("gbqfq").Value = ActiveSheet.Cells(rowno, 1).Value
'送信ボタンクリック
.document.forms(0).submit
'IE待機(地図が読み込まれるまで待つ)
sngT = Timer
While (InStr(.document.Title, ActiveSheet.Cells(rowno, 1).Value) = 0) And (Timer - sngT < 2)
DoEvents
Wend
'IE待機(地図の表示が完了するまでの時間を多めにとって待つ)追加
sngT = Timer ' 追加
While Timer - sngT < 0.1 ' 追加(数値を変えて実用に合わせる)
DoEvents ' 追加
Wend ' 追加
'次の行
rowno = rowno + 1
Loop Until (ActiveSheet.Cells(rowno, 1).Value = "")
End With
Set objIE = Nothing
End Sub
No.2
- 回答日時:
No.1です。
編集ミスしました。誤)
Dim objIE As InternetExplorer, rowno As Integer, sngT As Single
正)
Dim objIE As Object, rowno As Integer, sngT As Single
以上訂正です。すみません。
Microsoft Internet Controls に参照設定してある場合は、訂正不要です。
なるべく原形を保って書き加えるように書いていましたから、
私としては間違いであることに変わりないのですが、、、。
失礼しました。
この回答への補足
cj_moverさん
ありがとうございました。
エラーはなくなりましたが、住所を複数登録して、検索させると、
最後の行の住所しか、ブックマークされませんでした。
私のやりたかったことは、
複数の住所をすべてgoogle map上にマップしたかったのです。
google map の途中経過をみていると、
複数のブックマークがされていることは確認できるのですが、
処理が終わると、最後の行の住所しかブックマークされていません。
どこを修正すれば、いいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
自分の通っていた小学校のあるある
進学したり大人になってから、「あれって自分の小学校だけだったのかな」と思うことありますよね。 逆に「他の小学校ってそんなことするの!?」と思ったり。 そんな「自分の通っていた小学校」のあるあるを教えてください!
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
VBS実行時エラー オブジェクトがありません 回避方法について
Visual Basic(VBA)
-
オブジェクトが見つかりません
Visual Basic(VBA)
-
Workbook_Openを起動時以外に呼び出す
Excel(エクセル)
-
-
4
エクセルVBAでもっと早く転記
PowerPoint(パワーポイント)
-
5
エクセルVBA フォーム上でOnkeyがうまく出来ない
Excel(エクセル)
-
6
ExcelVBAの知恵をお貸しください。
Excel(エクセル)
-
7
For Nextマクロの高速化についてご教示ください。
Excel(エクセル)
-
8
Excel_VBAでハイパーリンクの削除時の書式
Excel(エクセル)
-
9
VBA For Eachでセル内の文字列を一個ずつ取り出すには
Excel(エクセル)
-
10
エクセルVBAでRangeの引数制限?
Excel(エクセル)
-
11
VBA/Worksheet_Changeがうまくいかない
PowerPoint(パワーポイント)
-
12
VBAで配列のデータを検索
PowerPoint(パワーポイント)
-
13
VBA DictionaryオブジェクトのItemについての質問です。
Excel(エクセル)
-
14
エクセル 一定の条件に沿ってデータを変換する方法を教えてください。
Excel(エクセル)
-
15
GoogleDoc.Spreadsheet配列数式
Excel(エクセル)
-
16
【Excel】2つの値のどちらかを抽出する
Excel(エクセル)
-
17
すでにコピーした情報を貼り付けたらイベントを発生
PowerPoint(パワーポイント)
-
18
VBAでURLからソース内の指定文字列を取り出す
Visual Basic(VBA)
-
19
Excelでデータ全通り組み合わせ出力方法
Excel(エクセル)
-
20
VBAでオプションボタンによってコンボボックスの内容を変える方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Yahoo地図でマーカーを表示した...
-
VBAでオブジェクトがありません...
-
【javascript】住所から郵便番...
-
デジタル時計の時刻合わせの方...
-
エクセルのシート上に別のシー...
-
[Java] Edgeでのアドレスバー非...
-
Javascript_submit()完了後に処...
-
マイページはどこを開くの
-
ウインドウを毎回同じ位置、大...
-
一定時間おきにアラームやポッ...
-
VBの画面で、全ウィンドウを一...
-
Excelでワードアートや図を常に...
-
スクリプトって、何ですか?ど...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
別フォームから戻ったときのイ...
-
スライドショーを全画面でなく...
-
「Cancel = True」とはどういう...
-
リストビューをスクロールさせ...
-
ポップアップウィンドウがブロ...
-
エクセルVBAでフォームのListbo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahoo地図でマーカーを表示した...
-
VBAでオブジェクトがありません...
-
googlemapで複数条件絞り込みで...
-
WordのVBAについて
-
郵便番号で検索⇒距離順に結果リ...
-
どうして+3
-
【javascript】住所から郵便番...
-
spanの位置、サイズを取得したい
-
Google マップにマーカーと同心...
-
GoogleMapお店の情報をJSONで取...
-
onMouseOver、onMouseOutイベン...
-
google map apiを使って自宅周...
-
ホームページビルダー16 地図...
-
GoogleMaps、Ajaxについて
-
JavaScriptでGoogleMAPの表示を...
-
google mapに複数マーカーを設...
-
「このウェブサイトには別の go...
-
GoogleMap クリックで情報ウィ...
-
GoogleMapsでルート内の座標を...
-
Google Maps APIのfitBounds
おすすめ情報