我有一個 Excel 啟用宏的報告作業簿,每個作業表(包括“ThisWorkBook”組件)中都有一些代碼,它會生成它的無宏版本供我的老板審查。我的老板幾乎總是對那個“.xlsx”檔案進行一些修改,我想將我所有的書面代碼轉移到這本編輯過的無宏書籍并再次保存為“.xlsm”。
如何僅訪問和復制這些組件內的書面代碼?
uj5u.com熱心網友回復:
可以復制 VBA 代碼(例如,請參閱將所有 VBA 代碼從作業簿復制到另一個),但這并不容易。
我會建議以下替代方案:
1)將檔案作為 XLSM 檔案發送以供審核。如果你想防止某些宏被執行,你可以創建一個小函式(讓它成為一個函式,而不是在每個地方硬編碼用戶名,這樣你就可以很容易地改變它)。
Function UserMacrosAllowed() As Boolean
UserMacrosAllowed = (Environ("UserName") = "milad")
End Function
然后,將以下陳述句放在不應由您的老板執行的例程的頂部,例如:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not UserMacrosAllowed Then Exit Sub
(...)
End Sub
2)如果這不可行,創建一個沒有任何資料的模板檔案,只包含所有代碼,并將xlsx 檔案的資料復制到其中。這應該容易得多。
uj5u.com熱心網友回復:
使用 FunThomas 提供的鏈接,我想出了我的解決方案:
Sub ExportCodes()
Dim newWithMacro as workbook
For Each Component In ThisWorkBook.VBProject.VBComponents
If Component.Type = 100 And Component.CodeModule.CountOfLines <> 0 Then
Text = Component.CodeModule.Lines(1,Component.CodeModule.CountOfLines)
newWithMacro.VBProject.VBComponents(Component.Name).CodeModule.AddFromString (Text)
End If
Next Component
End sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/408249.html
標籤:
上一篇:復制if陳述句
