Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2501 / 13645 ツリー ←次へ | 前へ→

【67661】バージョンアップによるIE操作の不具合 餡ドーナツ 10/12/21(火) 19:49 質問[未読]
【67662】Re:バージョンアップによるIE操作の不具合 かみちゃん 10/12/21(火) 20:21 発言[未読]
【67666】Re:バージョンアップによるIE操作の不具合 案ドーナッツ 10/12/22(水) 12:23 お礼[未読]
【67663】Re:バージョンアップによるIE操作の不具合 SK63 10/12/22(水) 0:23 発言[未読]
【67667】Re:バージョンアップによるIE操作の不具合 餡ドーナツ 10/12/22(水) 15:01 お礼[未読]

【67661】バージョンアップによるIE操作の不具合
質問  餡ドーナツ  - 10/12/21(火) 19:49 -

引用なし
パスワード
   職場のイントラネットにある
ブラウザによるデータベースが、あまりに使いづらいため、
データの読み出し・帳票作成印刷等をexcel vba で半自動化して使用していました。
環境は、OS=xp pro sp2, excel2003, IE6 でした。

これがパソコンの更新により、
OS=windows7(32bit), excel2007,IE8になりました。
予めイントラネット上のデータから別ブックに書き出しておいたデータの読み出し、帳票に貼り付け・印刷・保存といった処理は、
left等の文字列操作関数の左に「strings.」を
加える程度の変更で動いてくれました。

しかし、IEの操作部分が動きません。
例えば、下記のプロシージャです。
この部分で止まる1.
のとおり、InnerTEXTをstrTEXTに拾えません。
また、1.をとりあえずコメントアウトすると2.の入力で止まります。
IE6とIE8の違いなのでしょうか?
自分なりに調べましたが分かりません。
ご教授よろしくお願いします。

Sub ログイン()

'IEオブジェクト作成
  Set objIE = CreateObject("InternetExplorer.Application")
  
'ウィンドウの大きさ変更
  objIE.Width = 1024
  objIE.Height = 768
  
'表示位置変更
  objIE.Left = 0
  objIE.Top = 0
  
'指定したURLを表示
  objIE.Navigate "********************************************"
  
'ページの表示完了待ち
  Do While objIE.busy = True
  DoEvents
  Loop
  
'インターネットエクスプローラ画面の表示
  objIE.Visible = True

'ステータスバーとツールバーを表示
  objIE.StatusBar = True
  objIE.Toolbar = True
  
'ログイン中だったり、×で閉じた場合は終了するよう場合分け
'innerTextを取出す
  Dim strTEXT As String
'↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  strTEXT = objIE.Document.body.InnerTEXT '変数代入 この部分で止まる1.
'↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  strTEXT = Strings.Right(strTEXT, 25)
  Debug.Print strTEXT 'イミディエイトにも表示
  If strTEXT = "AAAAAAAAAAAAAAAAAAAA" Then
  
'  入力フォームへ入力
'↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    objIE.Document.forms("pwlogon").Item("logonid").Value = Sheets("sys").Cells(1, 1).Value 'この部分で止まる2.
'↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    
    objIE.Document.forms("pwlogon").Item("password").Value = Sheets("sys").Cells(1, 2).Value
    objIE.Document.forms("pwlogon").B1.Click

  'ページの表示完了を待ちます。
    Do While objIE.busy = True
    DoEvents
    Loop
  Else
'閉じてしまうと、なぜログインできなかったかわからないのでこのまま終了
    Exit Sub
  End If

End Sub

【67662】Re:バージョンアップによるIE操作の不具合
発言  かみちゃん E-MAIL  - 10/12/21(火) 20:21 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>職場のイントラネットにある
>ブラウザによるデータベースが、あまりに使いづらいため、
>データの読み出し・帳票作成印刷等をexcel vba で半自動化して使用していました。
>環境は、OS=xp pro sp2, excel2003, IE6 でした。
>
>これがパソコンの更新により、
>OS=windows7(32bit), excel2007,IE8になりました。

環境がないので、見当違いかもしれませんが、
XMLHTTPオブジェクトを使うことも検討してはいかがでしょうか?
ht tp://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html

【67663】Re:バージョンアップによるIE操作の不具合
発言  SK63  - 10/12/22(水) 0:23 -

引用なし
パスワード
   ▼餡ドーナツ さん:


 strTEXT = objIE.Document.body.InnerTEXT '変数代入 この部分で止まる1.
 dat = objIE.Document.body.innerHTMLこれだとOKなんで
フレームを指定したほうがよいかもです
以前IE7へ移行するとき(IE6-IE7)でありました。
現象は、HTMLが読み込まない、、、フレーム指定でできるようになりました。


objIE.Document.forms("pwlogon").Item("logonid").Value =****

objIE.Document.OrdJpStkNewForm.orderValue.Value = ****
のように、FORMの指定、ITEMの指定をすると良いのでは??
実は私も環境がWINDOWS7とIE7なので確認できていませんが。
ログインは、少しがんばると下のように送信部分を作成して送ってやると、
IEのバージョンに左右されなくなると思います。興味があれば、
GETで送受信で調べてみてください。
//POSTもありますが、POSTはGETより手間が掛かります。

URL01 = "*******.****.**.**/**********/login_eo?"
url02 = "koza1=" & ID01 & "&koza2=" & ID02 & "&passwd=" & pass
objIE.Navigate URL01 & url02

【67666】Re:バージョンアップによるIE操作の不具合
お礼  案ドーナッツ  - 10/12/22(水) 12:23 -

引用なし
パスワード
   早速回答いただきましてありがとうございます。
XMLHTTPオブジェクトを使用したことがないため、
示された、URLを取っ掛かりに勉強したいと思います。

できれば、今まで作成したコードの最小限の訂正で
動くようになるとよいのですが、とにかく勉強してみます。

【67667】Re:バージョンアップによるIE操作の不具合
お礼  餡ドーナツ  - 10/12/22(水) 15:01 -

引用なし
パスワード
   ありがとうございます。
フレームの指定ですか。IE7が参考になりそうなんですね。
いろいろ調べてみながら、試行錯誤してみます。

今日は、職場の大掃除・夜は忘年会で、まとまった時間がとれません。
通常業務も忙しくなってきましたので、1月初旬ごろを目途に、
なんとか形にしたいと思っています。
うまく動くようになったらご報告します。
回答ありがとうございました。

2501 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free