2022-02-06 xlsb 文件中的 ActiveX 命令按鈕和 VBA 代碼綁定問題

遇到一個比較奇葩的問題乘盼,沒找到解決方案螟凭,用英文關鍵詞找了也沒有亿虽,stackoverflow 和 EH 論壇都沒有找到可以參考的方法菱涤,最后春節(jié)假期自己研究,搞定了洛勉。我和大約 300 個用戶都是 win10 64+office365 或 office2016 環(huán)境粘秆。

我用 excel 做了設備維護用的巡檢表,里面有一千多行 vba收毫,實現(xiàn)了很多功能攻走。里面有表單控件的命令按鈕,也有 ActiveX 控件的命令按鈕此再,維護人員填寫完巡檢表后點擊按鈕提交昔搂,會自動另存為 pdf 并把 xlsb 和 pdf 文件放到指定目錄,然后調用 outlook 發(fā)郵件到指定郵箱歸檔文件引润。

前不久有同事給我發(fā)了七十多個文件巩趁,說里面有個按鈕點擊沒反應,讓我看下能不能修復淳附。

我打開文件發(fā)現(xiàn) ActiveX 按鈕變成了圖片议慰,沒有和代碼關聯(lián)。而大家知道奴曙,activeX 按鈕在創(chuàng)建后雙擊直接就跳到自動創(chuàng)建的形如 private sub commandbutton1_Click () 私有過程中了别凹,我就在這里面寫的代碼。

現(xiàn)在最簡單的解決方法是洽糟,把 Private 去掉炉菲,在按鈕上右鍵堕战,重新綁定,選擇 commandbutton1_Click拍霜,解決嘱丢。但是我有很多文件,每個都有密碼保護祠饺,都先解除密碼再這么操作越驻,太費勁了。有什么代碼可以指定按鈕關聯(lián)哪個過程呢道偷?找到了 OnAction 方法缀旁,用 ActiveSheet.Shapes (1).OnAction = "test" 這種可以。但是 Private sub 怎么辦勺鸦?經過測試并巍,ActiveSheet.Shapes (1).OnAction = "Sheet1.CommandButton1_Click" 寫成這樣,可以了换途。

于是懊渡,我在 personal.xla 里寫了如下代碼,放到快速訪問工具欄上怀跛,然后選中有問題的文件距贷,每選 15 個柄冲,回車吻谋,全部打開(我 win11 下超過 15 個再按回車就沒反應了,win10 下選 20 多個再按回車也可以)现横。點一下快速訪問工具欄的圖標(或者按快捷鍵漓拾,快速訪問工具欄第一個圖標快捷鍵就是 alt+1,第 8 個就是 alt+8)戒祠,搞定骇两,逐個點下去,一鍵修復姜盈,70 多個文件操作五六批全部搞定低千。

Sub 按鈕綁定修復 ()
    ActiveWorkbook.Sheets("test").Activate
    解鎖表
    ActiveSheet.Shapes(1).OnAction = "sheet1.CommandButton1_Click"
    ActiveWorkbook.Close 1
End Sub

主要就是要注意,私有過程馏颂,前面要加工作表名稱示血。

這個問題我遇到過不止一次,好好的文件在有的用戶電腦上保存一下就自動解綁了救拉。我后面要遠程看下那個用戶 office 環(huán)境难审。
xlsb 文件損壞概率比 xlsm 大,但 xlsb 比 xlsm 感覺安全一點點亿絮,別人破解要先另存為 xlsm 或 xls 才行告喊。

控件能用表單控件就盡量用表單控制麸拄,因為表單控件的兼容性比 ActiveX 控件要好的多。

我最早是 office2007 sp3 環(huán)境下開發(fā)的這一套模板黔姜,到 office2007 沒有 sp 包的環(huán)境就不正常拢切,至少要 sp2 才能正常,后面 office2010 也有問題秆吵,2013 也有問題失球,2016 問題最少,2007 以后帮毁,每個版本又有 32 和 64 位实苞,頭大的很。造成問題的主要就是 ActiveX 控件烈疚,每個版本要打哪個補丁黔牵,我曾經做過一個表,后面放棄了爷肝,太費勁了猾浦,統(tǒng)一要求 office2016,不是 2016 的卸載裝 2016灯抛,問題少多了金赦。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市对嚼,隨后出現(xiàn)的幾起案子夹抗,更是在濱河造成了極大的恐慌,老刑警劉巖纵竖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漠烧,死亡現(xiàn)場離奇詭異,居然都是意外死亡靡砌,警方通過查閱死者的電腦和手機已脓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來通殃,“玉大人度液,你說我怎么就攤上這事』啵” “怎么了堕担?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長骗炉。 經常有香客問我照宝,道長,這世上最難降的妖魔是什么句葵? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任厕鹃,我火速辦了婚禮兢仰,結果婚禮上,老公的妹妹穿的比我還像新娘剂碴。我一直安慰自己把将,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布忆矛。 她就那樣靜靜地躺著察蹲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪催训。 梳的紋絲不亂的頭發(fā)上洽议,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音漫拭,去河邊找鬼亚兄。 笑死,一個胖子當著我的面吹牛采驻,可吹牛的內容都是我干的审胚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼礼旅,長吁一口氣:“原來是場噩夢啊……” “哼膳叨!你這毒婦竟也來了?” 一聲冷哼從身側響起痘系,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤菲嘴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碎浇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體临谱,經...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年奴璃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片城豁。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡苟穆,死狀恐怖,靈堂內的尸體忽然破棺而出唱星,到底是詐尸還是另有隱情雳旅,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布间聊,位于F島的核電站攒盈,受9級特大地震影響,放射性物質發(fā)生泄漏哎榴。R本人自食惡果不足惜型豁,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一僵蛛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迎变,春花似錦充尉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谆吴,卻和暖如春倒源,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背句狼。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工相速, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲜锚。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓突诬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芜繁。 傳聞我的和親對象是個殘疾皇子旺隙,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容