
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も見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
VBS実行時エラー オブジェクトがありません 回避方法について
Visual Basic(VBA)
-
オブジェクトが見つかりません
Visual Basic(VBA)
-
VBA オブジェクトが必要です
Visual Basic(VBA)
-
-
4
Workbook_Openを起動時以外に呼び出す
Excel(エクセル)
-
5
For Nextマクロの高速化についてご教示ください。
Excel(エクセル)
-
6
VBAで配列のデータを検索
PowerPoint(パワーポイント)
-
7
エクセルVBA フォーム上でOnkeyがうまく出来ない
Excel(エクセル)
-
8
Excel_VBAでハイパーリンクの削除時の書式
Excel(エクセル)
-
9
VBA/Worksheet_Changeがうまくいかない
PowerPoint(パワーポイント)
-
10
GoogleDoc.Spreadsheet配列数式
Excel(エクセル)
-
11
【Excel】2つの値のどちらかを抽出する
Excel(エクセル)
-
12
Excelでデータ全通り組み合わせ出力方法
Excel(エクセル)
-
13
VBA/エクセルの日付入力でYYYYMMDD
Excel(エクセル)
-
14
Excel VBA カタカナ セル判定方法
Excel(エクセル)
-
15
EXCEL(VBA)で指定フォルダ内の最新ファイル名を取得したい
Excel(エクセル)
-
16
VBAでURLからソース内の指定文字列を取り出す
Visual Basic(VBA)
-
17
vbaで参照設定
PowerPoint(パワーポイント)
-
18
エクセルVBAでOutlookメールの書式を変える
Excel(エクセル)
-
19
[VBA]csvファイルを開いて保存(高速化)
Excel(エクセル)
-
20
VBAで質問です。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでオブジェクトがありません...
-
WordのVBAについて
-
郵便番号で検索⇒距離順に結果リ...
-
どうして+3
-
逆ジオコーディングについて
-
google mapに複数マーカーを設...
-
デジタル時計の時刻合わせの方...
-
マイページはどこを開くの
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
[Java] Edgeでのアドレスバー非...
-
Excelでワードアートや図を常に...
-
スクリプトって、何ですか?ど...
-
一定時間おきにアラームやポッ...
-
エクセルVBAでフォームのListbo...
-
PDFを(htmlのように)無限に縦...
-
Excel VBAでの右クリックのポッ...
-
Outlookでこのような表示がされ...
-
Visual Basicから Spreadのスク...
-
アコーディオンで開かれたパネ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahoo地図でマーカーを表示した...
-
VBAでオブジェクトがありません...
-
WordのVBAについて
-
【javascript】住所から郵便番...
-
googlemapで複数条件絞り込みで...
-
どうして+3
-
PHPで入力された住所で地図表示
-
Google Mapでマーカーにパラメ...
-
逆ジオコーディングについて
-
google map apiを使って自宅周...
-
GoogleMapsでルート内の座標を...
-
onMouseOver、onMouseOutイベン...
-
JavaScriptでGoogleMAPの表示を...
-
ビルダーの黄色マーカーの出し方
-
郵便番号で検索⇒距離順に結果リ...
-
既存のgoogleマップに半径表示...
-
Google maps API 吹き出しに画像
-
Google Maps APIのfitBounds
-
spanの位置、サイズを取得したい
-
aspのセレクトボックスにDBのデ...
おすすめ情報