前提・実現したいこと
VBAを使用して、IEからCSVファイルを開き、
別のエクセルファイルに転記したいのですが、
CSVを開いた後、エラーになり、処理が止まってしまいます。
発生している問題・エラーメッセージ
実行時エラー9 インデックスが有効範囲にありません
該当のソースコード
VBA
1#If VBA7 Then 2Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) 3#Else 4Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) 5#End If 6 7Sub SQL2() 8 9 Dim objIE As InternetExplorer 10 Dim objInpTxt As HTMLInputTextElement 11 Dim objTag As Object 12 13 Set objIE = New InternetExplorerMedium 14 objIE.Visible = True 15 objIE.navigate "http://(社内イントラ)" 16 17 Do While objIE.Busy = True Or objIE.readyState <> 4 18 DoEvents 19 Loop 20 21 Set objInpTxt = objIE.document.getElementsByName("inp_param")(0) 22 objInpTxt.Value = "(社内品番)" 23 24 For Each objTag In objIE.document.getElementsByTagName("input") 25 26 If InStr(objTag.outerHTML, "データ抽出") > 0 Then 27 objTag.Click 28 29 Do While objIE.Busy = True Or objIE.readyState <> 4 30 DoEvents 31 Loop 32 Exit For 33 End If 34 Next 35 36 For Each objTag In objIE.document.getElementsByTagName("input") 37 38 If InStr(objTag.outerHTML, "ダウンロードCSV") > 0 Then 39 objTag.Click 40 Exit For 41 End If 42 Next 43 44 45 Sleep 2000 46 47 SendKeys "%O", True 48 Call numLockOn (numlockをonにするだけの為、割愛します。) 49 50 51 Workbooks("result.csv").Activate ←ここでエラー 52 ...etc 53 54End Sub 55
試したこと
sendkeyを使用せず、IEの通知バーを手動で「開く」ボタンを押した時は...etc以降も問題なく動作するのですが、
sendkeyを使用して、VBAで処理した際には、エラー(インデックスが有効範囲にありません)となってしまい、止まってしまいます。
エラーで停止後、デバッグを押すと、自然とファイルが開かれ、 ...etc以降の処理も進むのですが、理由が分かりません。
開くボタンを押す方法かと思い、調べたのですが、sendkey以外で良い方法が見当たりませんでした。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー