excel - txt - vba open text




Excel VBA“自動化錯誤”由於2016年1月Office Update,可能由MSCOMCTL.OCX(Microsoft Windows公共控件6.o(Service Pack 6))引起的 (3)

我們的Business-ERP-Software Faktura-XP自從昨天就遇到了同樣的問題,我們調查了這個問題,並為它創建了一個補丁,也許它會幫助某人:

http://www.faktura-xp.de/faktura-xp-download/update-und-patch-oeffentlich.html#toggle-id-4

在我們的情況下,TreeViewControl停止工作,但它將是與自動相同的問題。 如果密鑰{831FDD16-0C5C-11D2-A9FC-000F8754DA1}有一個空的2.1或2.0條目,公用控制將停止工作,則Microsoft將MSCOMCTL.OCX更新為版本2.2。 解決方案:刪除密鑰2.0和2.1,離開2.2,取消註冊mscomctl.ocx並重新註冊。

我們的補丁將完成這一切,只不過是盡可能簡單的為我們的客戶,只需點擊下一步並關閉。

編輯了解更多信息:

HKEY_CLASSES_ROOT\TypeLib\{831FDD16-0C5C-11D2-A9FC-000F8754DA1}\2.2

是通過REGSVR32註冊新的MSCOMCTL.OCX(版本6.1.98.46)時新創建的

當有一個名為2.1的子密鑰時,它輸入一個引用,2.2現在是使用的密鑰。

如果有一個沒有任何內容的2.1 SubKey,你的對象將無法創建,因為它將使用2.1版本,不能也不會檢查2.2版本。

刪除這個鍵,如果需要的話,你很好走。

進一步的測試顯示2.0子密鑰已經過時,可能會導致問題。

大多數係統與Microsoft Windows 7有這個問題。 對於我們的軟件,沒有人在Windows 8.1或Windows 10之後在當前更新之後調用問題。

我已經使用Microsoft Windows公共控件6.0(Service Pack 6),即MSCOMCTL.OCX居住在C:\Windows\SysWOW64\

在2016-01-15(或其附件)上從Microsoft推出的KB2881029(Microsoft Office 2010 32位版本的安全更新)(MS16-004)安裝了MSCOMCTL.OCX (v6.1.98.46)的新版本在2015-12-09“創建”,但在更新時“已訪問”(即安裝在計算機上)。

這使得工作簿“失去”對MSCOMCTL.OCX引用(引用標記為“丟失”,因為引用仍被打勾但不再起作用;工作簿由於“編譯錯誤:對像庫功能不受支持”而不能編譯或“自動化錯誤”)。

看來,更新通過添加一個SubKey 2.0修改以下註冊表​​項,但保留為空,並且不註冊新的MSCOMCTL.OCX

HKEY_CLASSES_ROOT\TypeLib\{831FDD16-0C5C-11D2-A9FC-000F8754DA1}\

解決這個問題需要三個步驟:

  1. MSCOMCTL.OCX需要註銷並從提升的命令提示符處重新註冊,如下所示:

    C:\Windows\system32>Regsvr32 /u C:\\Windows\SysWOW64\MSCOMCTL.OCX 
    C:\Windows\system32>Regsvr32 C:\\Windows\SysWOW64\MSCOMCTL.OCX
    

    當通過REGSVR32註冊新的MSCOMCTL.OCX (版本6.1.98.46)時,一個新的密鑰被添加到註冊表中:

    KEY_CLASSES_ROOT\TypeLib\{831FDD16-0C5C-11D2-A9FC-000F8754DA1}\2.2
    

    如果有一個已經存在的名為2.1的子密鑰,它將輸入一個引用,2.2現在是使用的密鑰。 但是它不會對空的2.0子密鑰做任何事情!

    如果有一個2.0(或2.1)SubKey沒有任何東西,使用該OCX的任何對象將無法創建,因為它會使用2.0(resp 2.1)版本,它不能也不檢查2.2版。

  2. 通過刪除錯誤或被取代的鍵2.0和2.1來清理註冊表,只留下最新的工作鍵2.2。 這可以通過選擇HKEY_CLASSES_ROOT,編輯/查找/ MSCOMCTRL.OCX從註冊表編輯器完成。

    (注意:這一步似乎是可選的,因為我已經檢查過只做第一步和第三步使工作簿再次工作,但感覺是正確的)

  3. 在Excel工作簿VBA項目中,需要重新引用和重新引用Microsoft Windows公共控件6.0(Service Pack 6)。 重新引用不僅僅是重新勾選框的問題,您需要使用“瀏覽”,並選擇MSCOMCTL.OCXC:\Windows\SysWOW64\

    (注意,在瀏覽器窗口中,您需要將文件類型從“dll”更改為“OCX”(或“all”))

丹尼爾·亞歷山大·卡爾(請參閱下面的進一步文章)已經親切地分享了他寫的腳本自動執行步驟1和步驟2(注意需要以管理員身份運行)。

感謝Daniel和wmelonman在幫助你理解問題和尋找解決方案方面的幫助。

原始帖子

類似於這個3年前的文章(VBA自動化由於表單造成的Office Service Pack 3.0錯誤)所描述的 ,我的一個完美的工作簿從一天停止工作到下一個...

在昨晚進行的更新列表中,以下是Office更新:

  • KB3114563(Microsoft Office 2010 32位版本的定義更新)
  • KB2881029(Microsoft Office 2010 32位版安全更新)
  • KB3114555(Microsoft Office 2010 32位版本的更新)
  • KB3114553(Microsoft Office 2010 32位版安全更新)
  • KB3114564(Microsoft Excel 2010 32位版的安全更新)

還有其他的更新,但一般的微軟Windows更新,不是特定於Office,他們希望在這裡不相關。

我的理解是,“自動化錯誤”是由於項目沒有編譯,因為我從Microsoft Windows公共控件6.0(Service Pack 6)中引用的一個窗體上存在2個“附加”ActiveX控件, MSCOMCTL.OCX居住在C:\Windows\SysWOW64\

不幸的是,取消註冊和重新註冊MSCOMCTL.OCX 正如前面提到的帖子所解釋的,並沒有解決問題。

我也嘗試刪除所有*.exd ,但是我的C:驅動器上沒有任何。

可能相關的其他信息:

  • MSCOMCTL.OCX文件版本是6.1.98.46 ,創建並上次修改2015-12-09,但在昨天(凌晨三點三十五分)訪問(2016-01-15),即大約在同一時間更新發生(最後一個3:14 )。
  • 一旦傳遞了初始的“自動化錯誤”消息,我將得到一個額外的消息,“編譯錯誤:不支持對像庫功能”,突出顯示與附加控件關聯的代碼行。
  • 我已經通過創建一個試圖添加一個空白表單來驗證這些是“造成”的問題。 我收到錯誤信息“由於錯誤800a0011而無法完成操作”。
  • 這些額外的控件是Microsoft TreeView控件6.0(SP6)和Microsoft ImageList控件6(SP6)。
  • 我可以添加Microsoft TreeView控件,版本5.0(SP2)和Microsoft ImageList控件,版本5.0(SP2),而不會引發錯誤(我沒有嘗試讓它們工作)。

有誰知道與昨天的微軟更新之後的MSCOMCTL.OCX類似的事故嗎? 這可能證實這可能是我的問題的根源。

有誰知道一個修復?

有誰知道如何報告給微軟(如果確實是問題的根源)?

最後,對於那些感興趣的,有一種方法來避免微軟更新搞亂ActiveX控件...不使用它們! 這是JPK為他的TreeView所做的。


這裡有一個類似的問題:遠古XP上的Ancient Access 97應用程序( 不再那麼長久了,鬆了一口氣 )退出,說:“ 錯誤91:對像變量或塊變量未設置 ”。 當Mscomctl.ocx中的進度條控件被處理時,檢查顯示它發生了。

我發現KB2881029(MS16-004)是罪魁禍首。 它安裝新版本的MSCOMCTL.OCX。 在沒有這個更新的機器上,Access應用程序工作正常。 但它不適合刪除,至少這是我們的WSUS告訴我,當我要去的時候。 無論如何,我們不想活著沒有安全更新。

在閱讀了有關HKCR \ TypeLib {831FDD16 ...的答案之後,我試圖刪除當時仍安裝更新之前填充\ 2.0子項才發現,即使使用不存在\ 2.0子項更新確實創建空的在安裝。 做得好,微軟...!


這個問題已經在這裡詳細描述了:

“安裝安全更新MS16-004後錯誤消息或訪問崩潰”
MS:文章ID:3139567
(上次審閱時間:02/16/2016 19:15:00 - 修訂版本:3.0)

https://support.microsoft.com/en-us/kb/3139567