【问题标题】:Export sheet including VBA and a command button导出表,包括 VBA 和命令按钮
【发布时间】:2015-09-09 15:15:15
【问题描述】:

我需要将多个 Excel 工作表保存到单独的文件中。 工作表受到保护和锁定,但我想让拼写检查可用。 这可以通过 VBA 使用一个小例程来解锁>拼写检查>重新锁定

Sub SpellCheck()
ActiveSheet.Unprotect
Cells.CheckSpelling CustomDictionary:="CUSTOM.DIC", IgnoreUppercase:=False, AlwaysSuggest:=True, SpellLang:=1033
ActiveSheet.Protect
End Sub()

现在我在要导出的工作表上放置了命令按钮并分配了我的拼写检查宏。 我用 vba 将文件保存为 XLSM

Sheets("exportsheet").SaveAs Filename:="mysheet.xlsm", FileFormat:=52

如果我单击新保存文件中的按钮,宏将链接到将打开的原始源 excel。分配的宏链接如下所示: original_excel.xlsm!spellCheck()

如何以未将宏分配给原始工作簿的方式导出包含分配给命令按钮的 VBA 代码的工作表。

对此有什么想法吗?

【问题讨论】:

  • 我怀疑 SpellCheck() 子例程放在标准代码模块中?当您将该特定工作表另存为新工作簿时,Excel 别无选择,只能链接回标准代码模块中的该过程。如果您改为将 SpellCheck() 例程放在工作表模块中,然后将该工作表另存为新文件,会发生什么情况?

标签: excel vba button command


【解决方案1】:

如果您希望工作表在从工作簿导出后是自包含的,请从一开始就使其自包含。

将从工作表访问的所有例程放入该工作表的代码模块(而不是放入共享的标准代码模块)。

这样,工作表没有依赖关系,一旦导出到新工作簿,它将是自包含的。

【讨论】:

  • 您好,好的,有道理。我将 SpellCheckUnlockedCells() 放入工作表而不是常规模块。我将按钮放在工作表上并分配宏 Sheet2.SpellCheckUnlockedCells()。当我单击确定时,它将分配 main_excel.xlsm!Sheet2.SpellCheckUnlockedCells。当我打开导出的工作表时,将链接回原始的 excel 文件。
  • 顺便说一句:如果我在 VBA 编辑器中检查,新文件确实包含宏。但是,工作表现在是 Sheet8 而不是 Sheet2。但这并不重要,只要按钮链接到旧文件...
  • @heyhey33 你需要一个 ActiveX 命令按钮,而不是表单控件按钮。
  • 完美!谢谢你让我开心;)
  • 我遇到了另一个问题。取消保护工作表的密码是代码中的纯文本。显然,我可以在编辑器属性窗口中手动保护 VBA 代码。但是,我需要使用 VBA 自动执行此操作。这可能吗?
猜你喜欢
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2014-07-21
  • 2015-06-11
  • 2021-04-14
  • 1970-01-01
相关资源
最近更新 更多