
エクセルの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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
登録済みイベントリスナーの情...
-
EXCEL VBAで、EXCELの入力規則...
-
フォーム上で押されたボタンに...
-
三菱GOTの画面切り替えについて
-
「<c:forEach タグが終了し...
-
腕時計の時報をならないように...
-
jspからServletを呼び、元のjsp...
-
Formのデータが欠落することがある
-
JSPからJSPへ情報を渡せる?
-
リクエストに応じたselectedの...
-
system("cls")について
-
ASP.NET 画面遷移前の状態を保...
-
webアプリを作ってます。エラー...
-
jspでbeanを使いたいのです...
-
javascriptでセッションの削除...
-
JDBCにてデータをひく際のエラ...
-
C# ログイン画面からメイン画面...
-
NetworkStreamからのRead()で、...
-
JSPでのリストボックス表示
-
location.hrefでページ切替時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
登録済みイベントリスナーの情...
-
Formatでmmが月と分を意味する理由
-
ActiveWorkbook.Pathの一つ下の...
-
EXCEL VBAで、EXCELの入力規則...
-
VBAでTIFF画像を読み込むには?
-
jsp 動的テーブルについて
-
エクセルVBAでホームページの文...
-
MultipartRequestWrapperについて
-
ibatis queryForList取得できない
-
ActiveReportのDataSourceについて
-
GoogleMapでの複数マーカー表示...
-
ミキサーの操作
-
[JavaScript] 正規表現による複...
-
java → jsp コンボボックス表示...
-
指定地点(緯度・経度)から指定...
-
テキスト表示位置を取得するには
-
strutsで空白を認識させるには?
-
ADO.NETの処理分岐について教え...
-
javaを使い、jsonデータを取得...
-
javascriptでローカルフォルダ...
おすすめ情報