| 
    
     |  | 職場のイントラネットにある ブラウザによるデータベースが、あまりに使いづらいため、
 データの読み出し・帳票作成印刷等を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
 
 |  |