Excel(2000 or 2003) VBAを用いてIEを操作させ自動操作をさせています。
時にそのHPのログイン中でキャンセルのボタンを押す必要がある場合、nameが時にcancel1であったりcancel2であったりします。
諸条件により変化しますのでエクセルのセルにメモリとして代入しています。
IE.Document.All("cancel1").Click
これは通りますが
Cells(3,3)にcancel1が入っている場合
abcSTR = Cells(3,3)
IE.Document.All(abcSTR).Click
これはエラーがでてしまいます。
IE.Document.All.Item("cancel1").Click
についても同様なことがいえます。
おそらくこのコードではストリング変数は使えないのではないかと思っております。
必ずcancel1ボタンを押すのであれば前述のような固定の書き方でよいのでしょうが、状況により可変させる必要がある場合、どのようにすればよいのでしょうか?
少々面倒ですがループ処理によりItem(0)⇒Item(1)⇒・・・等にてinnerHTMLを解析させてストリング変数がnameに該当する番号のItem(X)をクリックさせるのが正解なのでしょうか?
Excel VBA歴半年未満の初心者です。
どんなささいなアドバイス・ヒントでも結構なので、どうぞよろしくお願いします。
『内部処理形式 String のバリアント型』を渡してみては?
あと、name が決まっているのであれば、all コレクションではなく、GetElementsByName メソッドを利用するのも手です。
有名なMVPの方に直接指導していただけるとは、なんと光栄なことでしょう!
Dim abcSTR As String
としていたのを
Dim abcSTR As Variant
に変更したところ、見事に通りました。
感謝感謝です。
魔界の仮面弁士さんに幸多からんことを!
ツイート | ![]() |