こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAオブジェクト変数またはWithブロック変数

Access VBAについてお教えください。

VBAを使用しています。下記のようなコードでDOMの値を取得しようと思っています。

If IsNull(IE.Document.getElementsByTagName("table").Item(1).rows(1).cells(0).innerText) Or _
IE.Document.getElementsByTagName("table").Item(1).rows(1).cells(0).innerText = "" Then
stocker = ""
Else
stocker = IE.Document.getElementsByTagName("table").Item(1).rows(1).cells(0).innerText
End If

IE.Document.getElementsByTagName("table").Item(1).rows(1).cells(0).innerText)にデータがある場合は、
問題なくstockerに値をセットすることができます。

ただし、IE.Document.getElementsByTagName("table").Item(1).rows(1).cells(0).innerText)にデータ(要素)が
なにも無い場合は、エラーが発生します。

「実行時エラー91;オブジェクト変数またはWithブロック変数が設定されていません」

IE.Document.getElementsByTagName("table").Item(1).rows(1).cells(0).innerText)にデータが無い場合は、NULLが
帰ってくるとサイトで見かけたので、IF文を使って回避しようと思いましたが、成功しませんでした。
何が悪いと考えられるでしょうか?

投稿日時 - 2012-08-18 16:57:17

QNo.7650570

困ってます

質問者が選んだベストアンサー

innerText が返すNULLって、NULL文字 = "" では?
たぶん、それより前の何かが Nothing 返してるんじゃないかと。

AccessもIEもよく知らないんだ。まぁ、試してみては?
 Set o = IE 'どっかでエラー起こす
 Set o = IE.getElementsBy..
 Set o = ..

対処は、Ifでチェックできれば理想だけど、OnErrorもアリ。
 OnError Resume Next 'エラー無視して次へ
 stocker = IE.getElementsBy..
 If Err <> 0 Then stocker = "" 'エラー時は0以外
 OnError Goto 0 '無視をやめてErrをリセット

あと、ローカルウィンドウとか、ステップ実行とか、VBEの便利な機能を使えると、自分でデバッグできるようになるよ。

投稿日時 - 2012-08-18 23:07:34

お礼

OnError Resume Next という手がありましたか!ありがとうございます、助かりました!!

投稿日時 - 2012-08-20 09:46:30

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問