用VBA刪除Word裏的巨集(Macro、宏) - 鳥毅的Blog

文章推薦指數: 80 %
投票人數:10人

用VBA刪除Word裏的巨集(Macro、宏) · Word必須信任存取Visual Basic 專案 · 要引用Microsoft Visual Basic for Application Extensibility. 跳到主要內容 用VBA刪除Word裏的巨集(Macro、宏) 9月04,2007 VBA是VisualBasicforApplications,和VisualBasic6並不是同個東西。

在下敝人小弟我遇到某些Word檔裏有AutoClose的巨集,而且內容不正確,可能是刪除病毒留下來的?OfficeScan並不把它視為病毒,但ClamAV、Nod32等均視為病毒直接刪除整個檔案,造成user困擾,而且AutoClose巨集會造成自動感染Normal.dot(Word97)。

本來想用ApachePOI處理,但沒找到VBE相關的東西,只好以夷制夷,呼叫Word自己來刪Macro。

由於我並沒有裝VSTO套件,所以也沒有試用.net存取Word的方式,直接用長得很像的VB6。

在下手上沒有VBA的書,照著網路上的範例在Word的VB編輯器可以,但試半天用VB6呼叫都沒有成功。

隔天敝公司的VB超人出差回來,他告訴我兩個keypoint:Word必須信任存取VisualBasic專案要引用MicrosoftVisualBasicforApplicationExtensibility我只注意到要引用WordObjectLibrary,忽略了VBE引擎,所以才會一直無法使用VBE。

請在VB6專案引用MicrosoftWord11.0ObjectLibrary(這是Word2003,從8.0~12.0應該都可以,看Client的Word,所以這個程式還和Word綁在一起)及MicrosoftVisualBasicforApplicationExtensibility5.3(同樣和Word綑綁,Word97的VBE無版號),我再加上了MicrosoftScriptingRuntime以提供FileSystemObject。

開檔的部份就不寫了,以下是刪除巨集的subroutine:PublicSubEraseWordMacro(wdAppAsWord.Application)DimwdDocAsWord.DocumentSetwdDoc=wdApp.ActiveDocumentDimjAsIntegerDimiAsIntegerDimnLinesAsIntegerDimoVBCompAsVBIDE.VBComponentDimcodeoflineAsStringDimnProjectsAsIntegernProjects=wdDoc.VBProject.Collection.CountForj=1TonProjectsDimnAsIntegerDimstrAsStringIfwdDoc.VBProject.Collection.Item(j).Protection=FalseThenDimkkkAsVBIDE.VBComponentForEachkkkInwdDoc.VBProject.Collection.Item(j).VBComponentskkk.CodeModule.DeleteLines1,kkk.CodeModule.CountOfLinesNextEndIfNextjEndSub這支程式主要是先找出Storage上所有doc檔,循序開啟刪除巨集,我設定是掃所有project,因此若Normal.dot有巨集也會刪除,若只想刪開啟的word檔上的巨集,就只要處理wdDoc.VBProject.Collection.Item(1)。

建議用Word2003,把安全性設為高以避免感染Normal.dot。

在測試Word2007時會顯示不提供版本功能,所以不建議使用,以免誤砍user資料。

Protection屬性在用Word97時會遇到,如ETKeys。

參考:以程式設計方式存取OfficeVBA專案遭到拒絕判斷巨集是否存在如何用VBA語句刪除工作表的類模塊或其中的宏HOWTO:使用FileSystemObject遞迴搜尋目錄 分享 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 標籤 Programming VB Word 標籤: Programming VB Word 分享 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 留言 這個網誌中的熱門文章 自然人憑證讀卡機驅動程式 4月06,2008 鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。

本來只是要申請些政府業務,一時之間找不到光碟,沒想到在驅動程式下載居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!! 分享 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 2則留言 閱讀完整內容 DBeaver介面語言 1月12,2018 DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。

分享 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 張貼留言 閱讀完整內容 在WindowsServer設定L2TPoverIPSecVPN 10月20,2016 簡單地說,macOSSierra與iOS10發表後,大家忽然發現Apple不再支援PPTP,所以一定得設定其他的VPN型態。

若不要另外裝client,用L2TP是最方便的,SSLVPN雖然好,但若沒有安裝Agent要連線到任一電腦或是非網頁服務還是挺麻煩的。

分享 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 5則留言 閱讀完整內容 關於鳥毅 鳥毅 瀏覽簡介 封存 2022 4 04 1 01 3 2021 9 11 1 08 1 07 2 06 1 05 1 03 1 01 2 2020 6 07 3 05 2 01 1 2019 8 12 3 10 1 08 1 06 1 03 1 01 1 2018 12 12 1 11 1 09 2 08 1 07 1 05 1 04 1 01 4 2017 14 12 1 11 3 10 2 08 1 05 3 04 3 01 1 2016 9 12 1 10 2 09 2 07 1 06 1 04 1 02 1 2015 8 12 2 11 1 10 1 09 1 08 1 05 1 01 1 2014 25 12 4 11 1 10 1 07 1 06 1 05 6 04 2 03 3 02 4 01 2 2013 19 12 3 11 2 10 1 09 1 06 2 05 3 04 5 02 2 2012 43 12 1 11 1 10 5 09 5 08 3 07 3 06 1 05 3 04 14 03 2 02 2 01 3 2011 37 12 4 11 3 10 3 09 3 08 3 07 7 06 4 05 3 04 2 03 1 01 4 2010 42 12 2 11 2 09 2 08 7 07 1 06 10 05 4 04 2 03 7 02 3 01 2 2009 63 12 6 11 3 10 5 09 5 08 4 07 7 06 5 05 4 04 6 03 5 02 7 01 6 2008 301 12 5 11 19 10 17 09 14 08 32 07 23 06 38 05 49 04 38 03 27 02 17 01 22 2007 351 12 20 11 29 10 28 09 21 不拘泥於招式 無責任新聞評論 準備虛擬化Server 售MacMini(已售出) 昨天做的夢 晴天霹靂 懷念的訊息 宅男大忌 故技重施 身為Programmer&IT人的下場!! 代友找工作 盜版行為不可取 遊戲外掛 Flash還會活蠻久的 不是普通人 近況報告 讓Ubuntu可以解rar 到底是誰的錯? SunODFPluginforMicrosoftOffice 用VBA刪除Word裏的巨集(Macro、宏) 管理是最重要的事 08 31 07 33 06 29 05 32 04 29 03 33 02 21 01 45 2006 331 12 42 11 70 10 73 09 52 08 28 07 11 06 10 05 18 04 7 03 17 02 1 01 2 2005 20 12 4 11 5 10 8 07 1 04 1 02 1 2004 1 12 1 顯示更多 顯示較少 標籤 .net 小米2S 不是錯誤特攻隊 白爛網管日誌 宅男 宅男電影觀點 防毒 奇異果 持續整合 笑話 專案管理 軟體 無責任美食 硬體 虛擬化 閒聊 資訊安全 網路 臺灣泥水工 熱水器 壁癌 盧擬化 鍵盤 職場 AI Android AndroidStudio Antivirus Apache Apple asp.net ASP.NetCore asp.netMVC BIOS BlogBackup Blogger C# C++ CentOS CI CoffeeScript CrystalReports CSharp CSS Database Dedup Development DFS DHCP DistrubutedFileSystem DIY DNS dotnet Dovecot Encoding EntityFramework ESXi Excel Firefox Firewall Fortigate Fortran FreeBSD FreeNAS FullCalendar gcc GIT Go Grub HTML Hyper-V Internet InternetExplorer iPhone IPSec Java JavaScript jQuery jRuby L2TP Linux Lisp LiveReload Lubuntu LXDE Mac macOS NAS4Free NetBeans Netezza Network Nexenta NFS Nginx NTLM nuget Objective-C OpenWebMail OSX PDA PHP Postfix Programming Proxmox PureData Python Rails Roundcube Ruby SageFrame SCM SDS Security SNMP Software Solaris SonarQube Spam SQLServer System TypeScript Ubuntu VB VersionControl Virtualization VisualStudio Vite VMWare VPN vSphere Vue Windows Word WSUS WWW Xen ZFS 顯示更多 顯示較少 檢舉濫用情形



請為這篇文章評分?