エクセルのVBAを用いてIEから文字を取得したいのですが、
ものによっては変数に入らずに困っております。
以下のコードでドキュメントのアンカーエレメントからinnerTextで文字を取得したいのですが、
ローカルウィンドウで見ると objIE.Document が『変数なし』になるのです。
これはどうしたらよいのでしょうか。
この状態では objIE.Document の中の情報がまったくわからないのです。
また、回答の中には、以下のコードのコメント部分の様に
Set objIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
とすれば良いとありますが、そうすると objIE そのものが『変数なし』になります。
EXCEL2000でVBAからIE11の環境がそうさせるのでしょうか。
検索するとたくさん回答が出てきますが、決定的なものはありません。
教えてください。よろしくお願いします。
Sub main()
Dim objIE As Object
Dim urlIE As String
urlIE = "http://www.nifty.com/"
Set objIE = CreateObject("InternetExplorer.Application")
'** objIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
objIE.Visible = True
objIE.navigate urlIE
Stop
Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Loop
End Sub
No.1ベストアンサー
- 回答日時:
アンカーエレメント(Aタグ)内の文字列を取得したいということですね。
Aタグ内は必ず文字列とは限らず、IMGタグになっている場合もあります。
下記の例では、innerHTMLを取得して書き出すようにしています。
参考にしてください。
Sub main()
Dim objIE As Object
Dim urlIE As String
Dim objA As Object
Dim objTmp As Object
Dim myRng As Range
Dim inner As String
'URL
urlIE = "http://www.nifty.com"
'貼り付け開始位置
Set myRng = Worksheets("Sheet1").Range("B10")
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate urlIE
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
'Aタグの集合体を取得
Set objA = objIE.Document.getElementsByTagName("A")
For Each objTmp In objA
inner = objTmp.innerHTML
myRng = inner
Set myRng = myRng.Offset(1, 0)
Next
End Sub
No.2
- 回答日時:
>EXCEL2000でVBAからIE11の環境がそうさせるのでしょうか。
要点だけにとどめますが、IE11 だからうまくいかないでしょう。下位バージョンでは成立していたのは知っていますが、うつうは使わないですね。
Internet Explorer というのは、三層構造になっていたと思いますので、
>Set objIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
たぶん、これですと、その一部で、オブジェクトとしては成立していないのだと思うのです。
Dim ta
Dim i As Long
Dim j As Long
'**省略**
Do While objIE.Busy Or objIE.ReadyState <> 4: DoEvents: Loop
j = 2 '2行目からの書き出し
With objIE
Set tagA = .Document.getElementsByTagName("a")
If tagA.Length = 0 Then GoTo EndLine
For i = 0 To tagA.Length - 1
'空白行の除去
If Trim(tagA(i).innerText) <> "" Then
'不要な改行コードの除去 Clean
Cells(j, 1).Value = Application.Clean(tagA(i).innerText)
j = j + 1
End If
Next i
End With
EndLine:
Set objIE = Nothing
End Sub
別の変数に移せばIE11でもうまく行きそうです。
objIE をオブジェクト型にするより、
HtmlDocument型とかを使うと良いようです。
アドバイスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBAで、EXCELの入力規則...
-
Spreadでの複数行選択
-
VBScriptで「My Documents」フ...
-
Goole Mapsのマイマップで出力...
-
vbaで、オートシェイプ文字列、...
-
HSPでHTMLのタグのパラメーター...
-
Swimgとデータベース
-
登録済みイベントリスナーの情...
-
Formatでmmが月と分を意味する理由
-
google apps script スクレイピ...
-
EXCELのメニュー操作アプリ(C#)
-
腕時計の時報をならないように...
-
プログラミングで例えばゲーム...
-
j-axis 腕時計のアラーム止めたい
-
フォーム上で押されたボタンに...
-
ウィンドウの制御について、質...
-
Beautiful Soupのインストール...
-
JSPでのサブミット判定
-
JSPでのリストボックス表示
-
登録後、呼び出し元ページに戻...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
登録済みイベントリスナーの情...
-
ActiveWorkbook.Pathの一つ下の...
-
ActiveReportのDataSourceについて
-
EXCEL VBAで、EXCELの入力規則...
-
VBAでTIFF画像を読み込むには?
-
javascriptでローカルフォルダ...
-
Excelで可視セルの行番号取得
-
Formatでmmが月と分を意味する理由
-
strutsで空白を認識させるには?
-
javascriptでphpに値を渡す
-
Spreadでの複数行選択
-
javascriptでIMEの状態を取得
-
VB.netのDataGridViewについて
-
outlook vbaについて
-
log4jでログレベルが取得できな...
-
エクセルVBAでホームページの文...
-
指定地点(緯度・経度)から指定...
-
C++のDLLでコマンドライン引数...
-
漢字読み取得方法
-
OpenGLでBMP画像を出力するには?
おすすめ情報