VBA保存宏启用文件参考原始文件

Posted

技术标签:

【中文标题】VBA保存宏启用文件参考原始文件【英文标题】:VBA save macro enabled file refere to original file 【发布时间】:2017-07-10 13:06:19 【问题描述】:

我查看了这里并尝试了许多解决方案,但无法让我的代码按预期运行。

我有一个启用宏的工作簿,其中一个模块位于名为“原始”的工作表上

我创建了第二张工作表作为主工作表,其中添加了一个按钮来复制“原始”工作表并将副本另存为启用宏。

当我打开复制的文件时,宏仍然引用初始文件。我希望宏只在复制的文件中,因为我无法将源文件分发给用户。

以下是我的代码

==>我如何复制文件

 Sub createNew(fineName As String)
    Dim mybook As Workbook
    Set mybook = ThisWorkbook
    Set newBook = Workbooks.Add
    mybook.Sheets("Original").Copy Before:=newBook.Sheets(1)
    Set newWs = newBook.Sheets("Original")
    newWs.Name = Left(fineName, 30)  
End Sub

==>我如何保存文件

 Sub savefile(fname As String, compid As Long)
    fname = "PS_" & fname
    Set newBook = ActiveWorkbook
    Application.DisplayAlerts = False

        newBook.SaveAs fname, FileFormat:=xlOpenXMLWorkbookMacroEnabled
        Application.DisplayAlerts = True

   closefile newBook

End Sub

感谢您的帮助!

【问题讨论】:

也许this article 会帮助你,解释如何将宏模块导出到另一本书。 “当我打开复制的文件时,宏仍然引用初始文件”:实际上除了复制的工作表之外,新工作簿中没有保存任何代码。源工作簿的其他模块中的宏根本不会复制到新工作簿中。他们确实参考了他们自己的工作簿。我不完全了解您面临的问题。你能进一步澄清吗? 非常感谢。我希望新复制的文件也有宏模块。 @费尔南多。谢谢你。我复制了工作表,但代码不在里面 【参考方案1】:

谢谢大家。我可以解决问题。感谢您的 cmets,我意识到我必须将模块复制到新复制的文件中

Sub CopyOneModule()
Dim FName As String
With Workbooks("Book2")
*** FName = .Path & "\code.txt"
*** .VBProject.VBComponents("Module1").Export FName
End With
Workbooks("book1").VBProject.VBComponents.Import FName
End Sub

【讨论】:

以上是关于VBA保存宏启用文件参考原始文件的主要内容,如果未能解决你的问题,请参考以下文章

VBA 代码无法在启用宏的文件类型中运行

VBA学习问题Excel2016无法保存宏文件的解决办法

怎么才能关闭这个office2013版本的vba工程提示?每次保存文件时候都会有如下提示,很不喜欢

每次保存文本文件时如何运行 VBA 宏?

使用 VBA 将包含 Excel 文件 (.xlsm) 的宏保存为不包含宏的文件 (.xlsx) 时抑制对话框

保存没有宏的 Excel 文件。 Excel VBA代码