エクセルVBAで、ファイルのアップロードができるフォームをSubmitした後に、遷移先の画面のDOMにアクセスできません。
未読分:3件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#3 2015年9月8日(火)09時45分 From: みっち | 返事 削除 変更 |
> SendKeysを利用されているようですが、NumロックキーのON処理をしていないせいではないでしょうか? > 回答ありがとうございます。 Numロックキーについてはそのままで特になにもしていませんでした。 こちらどのようにすればON処理できるでしょうか? とても困っています。 よろしくお願いします。 |
Message#2 2015年9月7日(月)16時48分 From: VBAマスター | 返事 削除 変更 |
> ' ファイルパスをキー入力 > objWS.SendKeys (file_path) > Application.Wait Now + TimeValue("00:00:01") > > ' ファイルを開くダイアログを閉じる > objWS.SendKeys ("{ENTER}") > Application.Wait Now + TimeValue("00:00:01") SendKeysを利用されているようですが、NumロックキーのON処理をしていないせいではないでしょうか? みるとファイルパス入力をしていますが、こちらに仮に数字があった場合は、SendKeysでも入力できないと思います。 一度確認されてはいかがですか? |
Message#1 2015年9月7日(月)06時49分 From: みっち | 返事 削除 変更 |
エクセルVBAで、ファイルのアップロードができるフォームをSubmitした後に、遷移先の画面のDOMにアクセスできません。 遷移先の画面でファイルはちゃんとアップロードされていることを確認できています。 スリープなどで待機させる方法も試しましたが、いくら待機させてもDOMを読んでくれません。 実行しようとしているサイトはニコニコモンズの素材アップロードフォームです。 解決方法をご教示いただけないでしょうか。コードは以下になります。 ************************************** Sub ボタン1_Click() 'IE起動 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://commons.nicovideo.jp/upload" '1画面目 Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.document.Forms("upform").Item("agree1").Checked = True '同意チェックボックスにチェック objIE.document.Forms(2).Item("upfile").Focus Call type_file_path(objIE, "upfile", "C:\upload\test.mp3") objIE.document.Forms(2).Item(4).Click 'フォーム送信 '2画面目 Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.document.Forms(2).Item(0).Value = "テスト" 'これが効かない End Sub 'アップロードするファイルのパスを指定 Public Sub type_file_path(objIE, idName As String, file_path) Dim objWS As Object Dim objElement As Object Set objWS = CreateObject("WScript.Shell") ' その右隣にある「参照」ボタンに、WSを使ってフォーカス objWS.SendKeys ("{TAB}") Application.Wait Now + TimeValue("00:00:01") ' SPACEキー押下で,ファイル参照ダイアログを開く objWS.SendKeys (" ") Application.Wait Now + TimeValue("00:00:01") ' ファイルパスをキー入力 objWS.SendKeys (file_path) Application.Wait Now + TimeValue("00:00:01") ' ファイルを開くダイアログを閉じる objWS.SendKeys ("{ENTER}") Application.Wait Now + TimeValue("00:00:01") Set objWS = Nothing End Sub ************************************** ブラウザ:IE11 Excelのバージョン:2010 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降