如何使文件工作表 "saved as" 中的宏按钮工作但不引用该旧文件?
How to make a macro button in a worksheet "saved as" from a file work but without reference to that old file?
我在一个文件中建立了一个宏,它可以复制一个模板工作表,并将每个新生成的工作表作为一个新文件保存在指定文件夹下的预定义文件名中。
模板工作表有一个宏,可以对第一列进行排序(是的,保存在那个工作表下)并仅显示 A 列中具有 "Yes" 的行和一个宏按钮,宏是分配给按钮。
在新保存的文件中,宏按钮总是与旧文件中的宏链接,所以每次我单击按钮时,宏都会打开旧文件。换句话说,宏是引用旧文件中的宏,而不是活动工作表中的宏。如果旧文件未打开,宏按钮将尝试打开旧文件。
如何让宏按钮自动链接到工作表中的宏?
代码非常简单,我已经使用当前的工作簿和工作表使其工作:
Sub SortRefresh()
ActiveWorkbook.ActiveSheet.Range("$A:$A").AutoFilter Field:=1, Criteria1:="Yes"
End Sub
希望您使用以下代码复制工作簿
ActiveWorkbook.SaveCopyAs "E:\XXXX.XLSM"
请尝试右键单击该按钮并检查分配宏,您检查它是否引用了复制的工作簿的子
您需要将带有代码的模块导出到新工作簿:
Dim strFolder As String, strTempFile As String
strFolder = Workbooks("Book1.xlsm").Path
strFolder = strFolder & "\"
strTempFile = strFolder & "~tmpexport.bas"
Workbooks("Book1.xlsm").VBProject.VBComponents("Module1").Export strTempFile
Workbooks("Book2.xlsm").VBProject.VBComponents.Import strTempFile
Kill strTempFile
嗨,我找到原因了。
添加的按钮应该是 ActiveX 控件按钮而不是表单控件按钮。 ActiveX 控件的宏不是 "linked to" 而是嵌入的。
右击ActiveX Controls按钮添加,然后点击"CommandButton Object" -> "Edit",输入
ActiveWorkbook.ActiveSheet.Range("$A:$A").AutoFilter 字段:=1, Criteria1:="Yes"
保存新文件后,单击 ActiveX 控件按钮不会打开旧文件。
我在一个文件中建立了一个宏,它可以复制一个模板工作表,并将每个新生成的工作表作为一个新文件保存在指定文件夹下的预定义文件名中。
模板工作表有一个宏,可以对第一列进行排序(是的,保存在那个工作表下)并仅显示 A 列中具有 "Yes" 的行和一个宏按钮,宏是分配给按钮。
在新保存的文件中,宏按钮总是与旧文件中的宏链接,所以每次我单击按钮时,宏都会打开旧文件。换句话说,宏是引用旧文件中的宏,而不是活动工作表中的宏。如果旧文件未打开,宏按钮将尝试打开旧文件。
如何让宏按钮自动链接到工作表中的宏?
代码非常简单,我已经使用当前的工作簿和工作表使其工作:
Sub SortRefresh()
ActiveWorkbook.ActiveSheet.Range("$A:$A").AutoFilter Field:=1, Criteria1:="Yes"
End Sub
希望您使用以下代码复制工作簿
ActiveWorkbook.SaveCopyAs "E:\XXXX.XLSM"
请尝试右键单击该按钮并检查分配宏,您检查它是否引用了复制的工作簿的子
您需要将带有代码的模块导出到新工作簿:
Dim strFolder As String, strTempFile As String
strFolder = Workbooks("Book1.xlsm").Path
strFolder = strFolder & "\"
strTempFile = strFolder & "~tmpexport.bas"
Workbooks("Book1.xlsm").VBProject.VBComponents("Module1").Export strTempFile
Workbooks("Book2.xlsm").VBProject.VBComponents.Import strTempFile
Kill strTempFile
嗨,我找到原因了。
添加的按钮应该是 ActiveX 控件按钮而不是表单控件按钮。 ActiveX 控件的宏不是 "linked to" 而是嵌入的。
右击ActiveX Controls按钮添加,然后点击"CommandButton Object" -> "Edit",输入 ActiveWorkbook.ActiveSheet.Range("$A:$A").AutoFilter 字段:=1, Criteria1:="Yes"
保存新文件后,单击 ActiveX 控件按钮不会打开旧文件。