Excel VBA:将工作簿限制为本地macros

我已经写了一个代码,将两个电子表格复制到一个新的工作簿中,将macrosembedded到工作表中,但是,调用macros的button仍在调用原始工作簿,而不是新工作簿中的重复的macros。 这个新的工作簿将被发送给其他没有访问原始的人,所以我的问题是,有没有办法自动更新button来调用新的工作簿中的macros,我将如何去做这个?

出口代码如下所示:

Sub ExportPropWB() Dim a As String, b As String, c As String, Mainbook As Workbook, info As Range, FileExtStr As String, FileFormatNum As Long, foldername As String, datestring As String, Newbook As Workbook, info1 As Range, info2 As Range, paste1 As Range, paste2 As Range Set Mainbook = Application.ThisWorkbook a = Mainbook.Worksheets("Application").Range("Client") b = Mainbook.Worksheets("Application").Range("ProjectName") datestring = Format(Now, "yyyy-mm-dd") c = datestring & " - " & a & " Proposal " & b foldername = Mainbook.Path & "\proposal\" Application.ScreenUpdating = False Mainbook.Worksheets("Equipment").Copy Set Newbook = Application.ActiveWorkbook Set info1 = Mainbook.Worksheets("equipment").Range("A1:AU343") Set paste1 = Newbook.Worksheets("equipment").Range("A1:AU343") paste1.Value = info1.Value Mainbook.Worksheets("Proposal").Copy after:=Newbook.Worksheets("Equipment") Set info2 = Mainbook.Worksheets("Proposal").Range("A1:AG1480") Set paste2 = Newbook.Worksheets("Proposal").Range("A1:AG1480") paste2.Value = info2.Value FileExtStr = ".xlsm" xFile = foldername & c & " " & FileExtStr Newbook.SaveAs Filename:=xFile, FileFormat:=52 Application.ScreenUpdating = True End Sub 

和button正在调用的代码如下所示:

 Sub HidePage02() With ThisWorkbook.Worksheets("Proposal").Shapes("Hide2").TextFrame2.TextRange.Characters If .Text = "Hide Page 2" Then .Text = "Show Page 2" Rows("75:148").Hidden = True ThisWorkbook.Worksheets("Proposal").Shapes("BHIP2").Visible = False Thisworkbook.worksheets("Proposal").Range("Page2") = "Yes" Else .Text = "Hide Page 2" With ThisWorkbook.Worksheets("Proposal").Shapes("Hide2") Rows("75:148").Hidden = False Thisworkbook.worksheets("Proposal").Range("Page2") = "no" ThisWorkbook.Worksheets("Proposal").Shapes("BHIP2").Visible = True End With End If End With End Sub 

感谢您的时间和协助。

SRJ提供的答复:

 With ThisWorkbook.Worksheets("Proposal") .Shapes("Hide2").OnAction = "Sheet22.HidePage02" End With 

此代码将形状更新为新macros,其中“build议”是工作表,“隐藏2”是对象的名称,“Sheet22.HidePage02”是本地macros名称