Wordpressを使っているサイトの更新状況チェックをVBAで行っています。あるサイトのところになるとエラーが出ます。
実行時エラー '438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
あるサイトとは、ドメインが同じで、サブドメインを使っている3つのURLで、複数…。
XMLHTTPで取得してみると、ひとまず外形的には取得できているようですが、ターゲットになる部分がどうも取得できていないように見えます。実は、文字化けで英数半角のタグの存在から、なんとなくそのように思いました。
サーバが貧弱なのか…。先だってまでは作業できていた。最近、ひとつのURLに関係しMySQLを別の場所に変更しただけだが…。Wordpressをつかっているのでindex.phpが中身をすべて読み込まないうちに、何らかの理由で完了サイン(数値:4)を返しているのだろうか…。イロイロ考えた(ふりをした)です…。
使っているIEはバージョン11でまず問題ないだろう…(実はこの設定に問題があったのだが…後述)、ということで、ひたすらVBAのスクリプトを書き換えておりました。
すると、HTMLクラス名ではNGだったものが、とあるHTMLタグ名であれば成功するなどばらつきが目につきました。でも、他の同様のWordpress(異なるドメイン)ではVBAが働いてくれます…やはりサーバか…(結果的にはそうではなかった…)
解決:互換表示設定を削除するとOK
解決編です。何のことはありません。記憶以外の設定をIEの該当ドメイン(≒サイトURL)にしていました。
IE→特定URL(適宜お好みの)→IE・ツール→互換表示設定→追加 により「互換表示に追加したWEBサイト」にそのドメインが追加済みになっていました。
これを他の用件で一時的に追加したことを忘れ、そのままにしていました。
削除であります。
この後、改めてVBAを動かしたら、何事もなかったかのように必要な作業をしてくれたのでした。
ie.Document.body.getElementsByClassName("xxx") が、ieの互換表示設定とバッティングするとは、意外でありました…朝から延々6時間の格闘でありました~ビェーン(泣)。