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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
VBS実行時エラー オブジェクトがありません 回避方法について
Visual Basic(VBA)
-
オブジェクトが見つかりません
Visual Basic(VBA)
-
エクセルVBAでRangeの引数制限?
Excel(エクセル)
-
-
4
ExcelVBAの知恵をお貸しください。
Excel(エクセル)
-
5
エクセル 一定の条件に沿ってデータを変換する方法を教えてください。
Excel(エクセル)
-
6
For Nextマクロの高速化についてご教示ください。
Excel(エクセル)
-
7
VBAで配列のデータを検索
PowerPoint(パワーポイント)
-
8
エクセルVBA フォーム上でOnkeyがうまく出来ない
Excel(エクセル)
-
9
エクセルVBAでもっと早く転記
PowerPoint(パワーポイント)
-
10
Excel_VBAでハイパーリンクの削除時の書式
Excel(エクセル)
-
11
VBA For Eachでセル内の文字列を一個ずつ取り出すには
Excel(エクセル)
-
12
VBA/Worksheet_Changeがうまくいかない
PowerPoint(パワーポイント)
-
13
VBA DictionaryオブジェクトのItemについての質問です。
Excel(エクセル)
-
14
GoogleDoc.Spreadsheet配列数式
Excel(エクセル)
-
15
Excel VBAにて
その他(Microsoft Office)
-
16
配列の値を置換するにはどうすればいいでしょう?
Excel(エクセル)
-
17
VBA/エクセルの日付入力でYYYYMMDD
Excel(エクセル)
-
18
VBAでURLからソース内の指定文字列を取り出す
Visual Basic(VBA)
-
19
配列を初期化する時ってどうすればいいですか?
Excel(エクセル)
-
20
Workbook_Openを起動時以外に呼び出す
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでオブジェクトがありません...
-
Yahoo地図でマーカーを表示した...
-
デジタル時計の時刻合わせの方...
-
エクセルのシート上に別のシー...
-
マイページはどこを開くの
-
一定時間おきにアラームやポッ...
-
Excelでワードアートや図を常に...
-
「Cancel = True」とはどういう...
-
ウインドウを毎回同じ位置、大...
-
PDFを(htmlのように)無限に縦...
-
Javascript_submit()完了後に処...
-
小さな表示窓の呼び方は
-
Outlookでこのような表示がされ...
-
アコーディオンで開かれたパネ...
-
VBの画面で、全ウィンドウを一...
-
VBA ポップアップが表示された...
-
Perlの多重起動を禁止したい
-
PDFファイルを分割するマクロの...
-
パソコンの画面よりも大きい画...
-
[Java] Edgeでのアドレスバー非...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahoo地図でマーカーを表示した...
-
VBAでオブジェクトがありません...
-
WordのVBAについて
-
JavaScriptでGoogleMAPの表示を...
-
郵便番号で検索⇒距離順に結果リ...
-
GoogleMapsでルート内の座標を...
-
GoogleMapAPIで複数のマーカー...
-
Google Map Api 複数のマーカ...
-
【javascript】住所から郵便番...
-
Google Maps APIのfitBounds
-
Google Map APIに関して
-
どうして+3
-
ホームページビルダー16 地図...
-
GoogleMapApi GoogleMap のカス...
-
GOOGLEマップのマイマップでマ...
-
googlemapで複数条件絞り込みで...
-
Google Maps API で 住所デー...
-
onMouseOver、onMouseOutイベン...
-
GoogleMapについて
-
GoogleMapsでルート表示
おすすめ情報