前提・実現したいこと
VBAを使って、Google Chromeから検索結果(今回はaaa)のURLをExcelに記載するマクロを作ろうとしています。
変数(Webelemens型)を宣言し、For文を使って<a>タグのhref要素を格納しようとしたのですが、エラー「実行時エラー13:型が一致しません」が出て進めることができませんでした。ちなみに、該当のソースコード14行目の(.Attribute("href"))を削除してマクロ実行したら、エラーは出ずに実行できるのですが、URLとは異なる文字列が記載されてしまい、目的のURLが表示されませんでした。
次に、ネットで調べて以下のプログラムを使えば、ExcelのA4セルにリンクを貼り付けることが出来ました。(該当のソースコード12行目~25行目を下記のプログラムに置き換えてください)。しかし、<a>タグhref要素の最後しか記載できないので、前回教わったやり方でそれぞれのhref要素を取り出そうとしました。しかし「実行時エラー13:型が一致しません」のエラーが出て行き詰まりました。
教えていただきたいのは、2点です
1:なぜ1のやり方だとエラーが出て進まないのか。また、うまくいくコードを教えてほしい
2:2のやりかただとなぜA4セルに入力までできたのか。また、なぜそれ以降のプログラムはうまくいかないのか
特に一つ目の質問に対して答えをいただけると助かります。よろしくお願いいたします。
※置き換えていただきたいプログラム(該当のソースコード12行目~25行目を下記のコードに置き換えてください。)--------------------
For Each anchor In Driver.FindElementsByTag("a").Attribute("href")
Range("A4").Value = anchor
Next
Dim e As Variant Dim r As Long Dim s As Long r = 1 + s '<-2行目からスタート For Each e In anchor Range("a" & Format(r + 3)).Value = e.Text '<- 転記先の行を変数に置き換えてe.textを転記 r = r + 1 '<-転記後は1行下へ移動
Next
発生している問題・エラーメッセージ
エラー「実行時エラー13:型が一致しません」
該当のソースコード
- Sub kenurlsitu()
- ' Seleniumのインスタンス生成(お決まり文言)
- Dim Driver As New Selenium.WebDriver
- Driver.Start "chrome" ' chrome使うからこれ
- ' 引数に開きたいURLを指定する(google)
- Driver.Get "https://www.google.com/?hl=ja"
- ' ①検索ボックスに「aaa」と入力
- Driver.FindElementByCss("body > div.L3eUgb > div.o3j99.ikrT4e.om7nvf > form > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input").SendKeys "aaa"
- ' キーボードのキー操作するための準備
- Dim sKey As New Selenium.Keys
- Driver.SendKeys (sKey.Enter)
- ' <a>タグのhref要素を全部取得
- Dim elmss As WebElements
- Set elmss = Driver.FindElementsByTag("a").Attribute("href")
- '中身を書き出し
- Dim e As Variant
- Dim f As Variant
- Dim r As Long '<-行を表す変数を追加
- Dim s As Long
- r = 1 + s '<-2行目からスタート
- For Each e In elmss
- Range("a" & Format(r + 3)).Value = e.Text '<- 転記先の行を変数に置き換えてe.textを転記
- r = r + 1 '<-転記後は1行下へ移動
- Next
- ' 終了処理
- Driver.Close
- Set Driver = Nothing
- End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/03 14:20