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