請教一下各位VBA高手,利用VBA程式開啟網頁操作這個我會
網頁也設定Visible=False了,但同樣程式碼在不同電腦執行時
卻會有不同結果,有時網頁會跳出來,有時則不會
這讓我還蠻困惑的,因為每次網頁跳出的時候,VBA程式都會出錯
是需要做什麼設定還是可以加入什麼程式碼,讓網頁百分之百不會跳出
希望有高手可以幫忙解惑一下,非常感謝。
作業環境是WIN 10+office 365

Sub test()
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = False
.Navigate "https://www.tpex.org.tw/web/stock/statistics/monthly/st44.php?l=zh-tw"
Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
End With
End Sub
文章關鍵字
smart3135 wrote:
讓網頁百分之百不會跳出
(恕刪)
Set IE = CreateObject("InternetExplorer.Application")(恕刪)


提示1:
不要用 InternetExplorer.Application

提示2:


提示3:

Url = "https://www.tpex.org.tw/web/stock/statistics/monthly/print_st44.php?l=zh-tw"

Url = "https://www.tpex.org.tw/web/stock/statistics/monthly/download_st44.php?l=zh-tw"

Urla = "https://www.tpex.org.tw/web/stock/statistics/monthly/st44.php?l=zh-tw"

.send "yy=2020&stk_no=" & stock_id


剩下資料整理、排版、年份輸入,請靠自己修改程式碼
snare wrote:
提示1:不要用 In...(恕刪)

很感謝snare大的建議,我提供程式碼連結的網址只是一個範例

主要是要做公司網頁資料的擷取,而公司網頁無法由外網連入

所以就任意提供一個網址,我對於VBA可能只學到了皮毛

對於一些網頁上的操控、匯出、匯入還不是很了解

其實我的程式碼已經寫的差不多了,主要就卡在.Visible這個地方

明明已經下False指令,卻還是彈出網頁,如果真的確實沒辦法使用IE

那我會再找時間仔細好好研究snare大的那棟大樓
 

Sub 工單總數回報()

Set IE = CreateObject("InternetExplorer.Application")

    With IE

        .Visible = False

       .Navigate "http://xxxxxxxx/WipTxnManager/jsp/report/wipQtyReport.jsp"

        Do While .Busy Or .ReadyState <> 4: DoEvents: Loop

       

        

        With .Document

                .ALL("dFrom").Value = "2020/01/05"    '開始日期

                .ALL("dTo").Value = "2020/01/11"    '結束日期

                For Each E In .GetElementsBytagName("INPUT")

                    If E.Value = "查詢" Then

                        E.Click

                        Exit For

                    End If

                Next

               

'                .ALL("查詢").Click       '按下查詢鍵

            End With

            Do While .Busy Or .ReadyState <> 4: DoEvents: Loop

            .execwb 17, 2

            .execwb 12, 2

           

        With ActiveSheet

            .Cells.Delete

            .[a1].Select

            .PasteSpecial Format:="Unicode 文字", Link:=False, DisplayAsIcon:= _

            False, NoHTMLFormatting:=True

        End With

    End With

End Sub





另外還有爬文找到一段程式碼,說這樣寫可以避免IE網頁跳出

但實際試了一下好像不行,不知道是不是程式碼放的位置不對。

Dim IDC As Object
Dim IDCWin As Object

Set IE = CreateObject("InternetExplorer.Application")
Set IDC = CreateObject("Shell.Application")

For Each IDCWin In IDC.Windows

    If IDCWin.LocationURL = "YOUR WEBSITE" Then
        IDCWin.Visible = False
  End If
Next IDCWin 
爬了幾天Google大神,目前僅有在http://coding-warehouse.logdown.com/posts/193504-get-ie找到解決方法
但公司的電腦這樣設定不是很恰當,有試過在程式碼中加入IE.Quit或Set IE=Nothing
依舊會出錯,不知是否還有其他方式

執行程式碼出錯



目前唯一找到的解決方法
smart3135 wrote:
請教一下各位VBA高(恕刪)


加個DoEvents試試

Sub test()
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = False
DoEvents
.Navigate "https://www.tpex.org.tw/web/stock/statistics/monthly/st44.php?l=zh-tw"
Do While .Busy Or .ReadyState <> 4
DoEvents
Loop
End With
End Su
WJS_HVM wrote:
加個DoEvents...(恕刪)

不好意思,試了加入DoEvents,一樣還是會跳出IE視窗,還是會出錯。
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!