Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

請問VBA專家.IE8的[分頁]問題.謝謝.

圖片參考:http://imgcld.yimg.com/8/n/AC00688623/o/1512021008...

請問VBA專家.IE8的[分頁]問題.謝謝.VBA在點擊URL時.都會出現在同一個分頁.使用起來.很不方便.不知有沒辦法來突破.舉例如上圖:這裡有3個URL.在EXCEL用人工點擊.會在同一畫面產生[分頁]的資料.但是用程式來點擊.就全部擠入一個分頁.使用起來很不方便.

我的VBA是這個樣子的.請參考:Sub 打開網頁的內容() If MyIE Is Nothing Or TypeName(MyIE) = "Object" Then Set MyIE = CreateObject("InternetExplorer.Application") End If With MyIE .navigate Url '該URL變數資料.由前面程式產生 .Visible = True While .Busy Or .readyState <> 4: DoEvents: Wend End WithEnd Sub以上如有不清之處.將另行補充之.謝謝!

已更新項目:

妙地的方法真是好用.問題都已解決了.

妙地有提到.開山始祖是001回答者.吼兒也是.

妙地只是借花獻佛.真是謙虛.

假如沒有意見的話.3天後.就以001為最佳解答.

不過請001將妙地的[花]補上去一下.

謝謝!

2 個已更新項目:

SyneArt 大

解釋的很好.請解釋一下 CLng 指令的簡要功能好嗎.我看題庫很多.大概知道意思.

但是不知道真正的功能.3QQQQ~~~~

5 個解答

評分
  • 9 年前
    最佳解答

    試試看吧,可以由分頁開啟. 增修兩個地方即可.

    Sub 打開網頁的內容() Const navOpenInNewTab = &H800 If MyIE Is Nothing Or TypeName(MyIE) = "Object" Then Set MyIE = CreateObject("InternetExplorer.Application") End If With MyIE .navigate Url , CLng(navOpenInNewTab) .Visible = True While .Busy Or .readyState <> 4: DoEvents: Wend End WithEnd Sub

    2012-02-11 17:54:57 補充:

    我也是有名子的.. 不過版主一直叫我 001 回答者,那我應該改名了. 囧

    /*

    The following answer is from

    http://tw.knowledge.yahoo.com/my/my?show=AA0241787...

    */

    //Delay Function.

    Public Sub Delay(ByVal mySecond As Integer)

    Dim startTimer As Single

    startTimer = Timer

    While Timer - startTimer <= mySecond

    DoEvents

    Wend

    End Sub

    2012-02-12 00:14:20 補充:

    了解. 不過是您回答的,所以直接註明。

    在此也感謝 [世賢]大. 真是高手雲集.

    2012-02-12 18:00:59 補充:

    回應"妙地

    首先我們參考:http://msdn.microsoft.com/en-us/library/ie/aa75209...

    可以知道 object.Navigate 可加 Flags

    再來我們參考: http://msdn.microsoft.com/en-us/library/ie/dd56568...

    所以找到

    navOpenInNewTab = 2048 = &H800

    Windows Internet Explorer 7. Open the resource or file in a new tab ... (略)

    2012-02-12 23:23:49 補充:

    版主,這裡有CLng() 的解釋及用法 http://support.microsoft.com/kb/279115/zh-tw

  • 回答者: SyneArt ( 研究生 5 級 )

    回答的超級棒,直得嘉勉,

    不過版主,您仔細去測一下您的程式,

    保證還有問題,

    那個While .Busy Or .readyState <> 4: DoEvents: Wend

    可以點掉,但是網頁會出現很多問題,

    會產生錯誤訊息也是它的影響,

    您再試試看,檢查每一題對不對,

    是不是每頁都開啟了,總數對不對,

    有問題再說。

    2012-02-11 14:21:12 補充:

    其實回答者+吼兒都是開山始祖,

    我只是借花獻佛而已,

    我的是引用世賢大的回答題庫而已,

    就給他發表一下意見而已,

    請版主自己測測看可不可行:

    Do While .Busy Or .readyState <> 4

    是用在單頁時的整張網頁,

    把它改成延時的方式,

    Delay 1

    2012-02-11 14:24:56 補充:

    Public Sub Delay(ByVal mySecond As Integer)

    Dim startTimer As Single

    startTimer = Timer

    While Timer - startTimer <= mySecond

    DoEvents

    Wend

    End Sub

    2012-02-11 21:23:30 補充:

    SyneArt 大:

    感謝~~~~~~~

    /*

    The following answer is from

    http://tw.knowledge.yahoo.com/my/my?show=AA0241787...

    是[世賢]大的佳作.轉貼而已.

    2012-02-12 08:39:57 補充:

    SyneArt 大:

    可否簡單解釋一下那新增的2句語法,

    多謝!

    2012-02-12 21:51:28 補充:

    SyneArt 專家:

    解釋的很清楚,謝囉!

  • 匿名使用者
    9 年前

    剛剛才查到回過頭已經討論得這麼熱烈了˙˙

    http://msdn.microsoft.com/en-us/library/ie/aa75209...

    http://msdn.microsoft.com/en-us/library/ie/dd56568...

    功能真不少˙˙"

  • 9 年前

    吼兒:

    感謝關心.幫忙試一下喔.謝謝!

    2012-02-11 00:35:10 補充:

    加油喔~~~~~~~~

    私下請問了一些VBA&VB6專家.

    的確有困難.

    網路的題庫的文獻也滿有限的.

    2012-02-11 00:38:56 補充:

    我先睡囉.晚安.謝謝.

    不要太晚睡喔!

    2012-02-11 09:02:48 補充:

    感謝大家這麼積極的幫忙.謝謝.

    吼兒的這個TXT打不開呢.

    http://www.kouji6309.idv.tw/knowledge/151202100891...

    回答者的修改.畫龍點睛.點的不錯.但產生2種狀況.應該是我的問題.

    1.While .Busy Or .readyState <> 4: DoEvents: Wend==這裡要點掉.

    2.SysFader: IEXPLORE.EXE – 應用程式錯誤[出現2次.點確定就好了].

    2012-02-11 11:52:01 補充:

    1.謝...妙地大師的指點.抽空再測一下..

    2.吼兒:

    謝謝.

    但有出現>>>>編輯錯誤==.Busy不正確的引用...

    不知您的電腦會這樣嗎?

    2012-02-11 12:30:50 補充:

    1.吼兒的寫法.還滿單純的.不過可否解釋一下您的語法與參數意義....

    2.吼兒的版本.也是會出現錯誤視窗.

    我按妙地大的說法去仔細查對.

    發現項數減少了.問題是出在.錯誤視窗的警訊.

    還真是不能忽略.

    3.可見妙地有看到本題的癥結所在.

    可否請妙大大來指點一下.謝謝.

  • 匿名使用者
    9 年前

    應該是要建立多的物件

    2012-02-11 00:33:10 補充:

    剛剛試了一下(IE9)

    我只能讓他開新視窗...

    也就是一個網頁一個新視窗...

    2012-02-11 01:01:33 補充:

    解決!參考

    http://blogs.msdn.com/b/rahulso/archive/2006/12/17...

    2012-02-11 01:06:15 補充:

    結果

    http://www.kouji6309.idv.tw/knowledge/151202100891...

    2012-02-11 01:08:35 補充:

    覺得URL當參數傳進SUB比較好...

    2012-02-11 11:30:15 補充:

    呃...

    今天我搬去宿舍

    所以電腦關機一陣子

    另dns還要重新設定

    所以打不開...

    2012-02-11 11:30:45 補充:

    txt內容是

    Sub 打開網頁的內容()

      If MyIE Is Nothing Or TypeName(MyIE) = "Object" Then

        Set MyIE = CreateObject("InternetExplorer.Application")

        MyIE.navigate2 Url

        MyIE.Visible = True

      Else

        MyIE.navigate2 Url, 2048

      End If

      While .Busy Or .readyState <> 4: DoEvents: Wend

    End Sub

    2012-02-11 11:54:47 補充:

    啊...

    第一次我用OK,後來改精簡一點

    改完忘記再拿去VBA測一次...

    2012-02-11 11:55:56 補充:

    在.Busy 和 .readyState 前面

    加上MyIE

    因為我把with刪掉了

    忘記後面還有其他屬性

還有問題?馬上發問,尋求解答。