我试图创建一个“导出按钮”,该按钮当前创建一个新的工作簿,其中包含现有工作表中的特定工作表,取消隐藏它们,其中一个工作表包含一个按钮。此按钮名为Export Email Button
。它是宏分配给当前工作簿使用的工作表,总是复制/导出,这个宏名为ExportEmail()
一旦我复制这些工作表,选择按钮,并改变OnAction
,似乎没有更新。
Sheets(mySheets).Copy
ActiveWorkbook.Worksheets("ExportEmail").Visible = xlSheetVisible
Dim ExternalLinks As Variant
Dim x As Long
'Purpose: To break external links
ExternalLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
For x = 1 To UBound(ExternalLinks)
ActiveWorkbook.BreakLink Name:=ExternalLinks(x), Type:=xlLinkTypeExcelLinks
Next x
'Here the issue lays
ActiveWorkbook.Worksheets("ExportEmail").Buttons("Export Email Button").OnAction = "NewMacro"
'New button is assigned to "'Names Update Master.xlsm'!NewMacro"
ActiveWorkbook.SaveAs myFolder & NewName & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close savechanges:=False
更新
' "'" & NewName & ".xlsm'" - This should return "'June 2023.xlsm'", but instead turns "'C:/June 2023.xlsm'"
ActiveWorkbook.Worksheets("ExportEmail").Buttons("Export Email Button").OnAction = "'" & NewName & ".xlsm'!Sheet4.ExportEmail"
1条答案
按热度按时间9jyewag01#
如果要将宏分配给新创建的工作簿,请将工作簿名称添加到宏中,并用感叹号分隔。如果您稍后使用其他名称保存文件,Excel将自动更新
OnAction
-方法。但是,我在这里看到另一个问题:通过复制工作表创建新工作簿时,只复制工作表模块中的宏。因此,如果你想复制
NewMacro
-例程,你应该把它放到ExportEmail
的工作表模块中。在这种情况下,您需要通过在工作表的codeName
前面加上一个点来调用它。请注意,图纸的代号不是图纸名称本身。尝试以下操作(注意,我已经为新工作簿和-sheet使用了变量)。