0
Dim IE As New ShDocVW.InternetExplorer 
IE.Visible = True 
IE.Navigate("C:\Users\m0180kb\desktop\test.html") 
Do Until IE.Busy = False 
Loop 
IE.Document.All("testField").Value = "Testing" 'This line causes the error 
IE.Close 

當以下是錯誤:運行時錯誤「-2147024891(80070005)」:訪問被拒絕。shdocvw.dll中InternetExplorer對象 - 「訪問被拒絕」操縱本地.html文件

更多信息:正在Excel VBA中完成編碼。如果我使用有效的URL代替文件路徑,它將起作用。只要該HTML文件在瀏覽器窗口中加載,與InternetExplorer對象關聯的所有對象和屬性就會因「訪問被拒絕」錯誤而變得無用。

我想到的一種解決方法是通過文本流生成.html代碼。這將允許我得到我的表單字段操作,但是,我仍然需要通過ShDocVW.dll提交的HTML表單....你猜對了....導致訪問被拒絕的錯誤。

請讓我知道如果你知道反正去解決這個錯誤,或者知道這可能讓我獲得通過操縱Excel VBA中本地HTML文件的任何註冊表項或安全設置。

感謝

+0

html頁面中的任何「活動內容」(如腳本)?谷歌爲「網絡標誌」 - 也許這將幫助你在這裏。例如:http://www.markoftheweb.com/ – 2012-02-10 07:23:55

+0

網絡的標誌允許javascripts運行,但那不是我的主要問題。不錯的小費,謝謝你。但是,我仍然有「訪問被拒絕」錯誤。 – 2012-02-10 13:34:21

回答

0

這對我的作品

Option Explicit 

Sub Sample() 
    Dim IE As Object, ieDoc As Object 

    Set IE = CreateObject("InternetExplorer.Application") 

    IE.Visible = True 
    IE.Navigate ("C:\Users\m0180kb\desktop\test.html") 

    Do While IE.ReadyState <> 4: DoEvents: Loop 

    Set ieDoc = IE.Document 

    ieDoc.getElementById("testField").Value = "Testing" 

    'IE.quit 
End Sub 
+0

Siddharth,謝謝你的建議。我嘗試過,但它導致相同的錯誤。我已經嘗試了許多不同的代碼配置,許多不同的方式來聲明變量等,但它們都不起作用。我確信這是一個隱藏在操作系統某處的環境......不是代碼......這就是問題所在。順便說一下,它是Windows XP SP2和Internet Explorer 7。 – 2012-02-10 13:36:14

0

我想通了什麼問題。它與代碼或本地計算機安全設置無關。我的電腦上

我的.html文件有2幀,每一個加載不同的網站。由於這是一個被稱爲跨幀腳本的巨大安全風險,當2個域出現在html文件中時,所有腳本語言(如vba,javascript或使用mshtml.dll或shdocvw.dll的任何其他語言)都將被禁用。

有一種方法,使這項工作,但它涉及到添加一行代碼正在合併兩個網站。實質上,如果您不是網頁的所有者,則無法添加這一行代碼,這可以防止外部人員在您的網站上進行跨框架腳本編寫。

這就解釋了爲什麼我的測試工作在互聯網上,但不是當我結合我的本地驅動器上通過幀2個域。瞭解這一點,我可以改變我的方法,並仍然提出一個可接受的解決方案。

謝謝大家的建議。非常感激。