看板 Office 關於我們 聯絡資訊
: 可是有些網頁Alert在原始檔找不到,所以無法用以上方式關閉,造成VBA無法繼續. : 例如上面的javascript如果我沒有去改內容, : 就會造成alert發生時,因為還沒關掉, : 所以下一句"window.print()"就還沒執行, : 等於VBA的第四行FireEvent還沒執行完, : 即便下面再加Sendkeys也無法點掉alert, : VBA的執行就停在第四行... 這裡我改用VBA呼叫外部程式來處理,使用的軟體是AutoHotkey,檔案下載: https://www.dropbox.com/sh/u4ab8ul2q9ltllt/AAAm4VuDqRBuPriKpOX7Uxi4a?dl=0 裡面有一個是含有JavaScript的網頁,具有列印功能 exe檔則是使用AutoHotkey編譯的程式,下載後可以直接使用不需安裝AutoHotkey 若不放心請到官網下載程式後複製下面的程式碼,再用附加的工具進行編譯 ----------------------------------------------------------------------------- ^!a:: Sleep 2000 IfWinExist 網頁訊息 { WinActivate Send {Enter} } Sleep 2000 ifWinExist 列印 { WinActivate Send {Enter} } Return ^!a:這是啟動AutoHotkey程式的快速鍵,^是Ctrl,!是Alt,a就是a,即Ctrl + Alt + a Sleep:等待多少時間後執行程式碼,單位是毫秒,在這裡就是2秒後執行 IfWinExist:判斷視窗是否存在,在IE11裡彈出的名稱http://i.imgur.com/oNKGNpS.png WinActivate:視窗啟用,讓Send找到目標視窗後按下Enter即可關掉(列印)視窗 ----------------------------------------------------------------------------- Sub IE11() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "C:\Users\Administrator\Desktop\test2.html" Shell ("C:\Users\Administrator\Desktop\test1.exe") ' Do While objIE.Busy = True Or objIE.readyState <> 4 ' DoEvents ' Loop SendKeys "^%a" 'Ctrl+Alt+a,為AHK程式自行設定的快速鍵 '-----------------以下3種方式均可執行JavaScript-------------------- ' objIE.document.getElementsByTagName("button")(0).Click ' objIE.navigate "JavaScript:alert("""請設定橫式列印""")" objIE.document.parentWindow.execScript "myprint()" '------------------------------------------------------------------ Cells(1, 1) = "完成" End Sub ----------------------------------------------------------------------------- 先呼叫AutoHotkey程式,在背景先待機,接著等Do迴圈跑完網頁後,再執行Sendkeys送出 快速鍵來執行該程式的動作,但是會先等待2秒後才執行按鍵命令,因為Alert還沒跳出來 故先用一個緩衝時間作等待,此時VBA繼續執行網頁的JavaScript後會暫時凍結而不往下 2秒後AutoHotkey程式就會開始進行一連串動作,作完後,VBA就會繼續往下執行了 另外要注意的一點是每次要執行VBA前必須要先關閉AutoHotkey程式,否則它每次都會詢 問是否要用新程式來取代舊程式的執行 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.41.86.100 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1467693184.A.E92.html
Linkey: 和o707o7一樣,操作的網頁是公司內網,無法聯外 07/05 14:02
Linkey: 沒有權限安裝軟體,能用的就Excel 2003 07/05 14:04
Linkey: 這才是真的頭痛的地方,連google都沒有,只有office的help 07/05 14:05
那個程式可以直接執行不用裝AHK就是,不過如果連外也不行的話就沒辦法了 純粹要靠VBA的話可能可以用API,只是自己在測試的時候不管怎樣還是會被卡住Orz ※ 編輯: MashiroX421 (114.41.86.100), 07/05/2016 16:55:28