在不同的excel文件中使用一个宏

时间:2012-02-28 11:19:21

标签: excel excel-vba vba

我写了一个宏,我想在不同的excel文件中使用它,它们具有几乎相同的表结构但数据不同。

那么无论如何只要将我的宏脚本“包含”到任何excel文件中都可能吗?!

我已经读过this tip了,但这听起来像个恶作剧。

谢谢

5 个答案:

答案 0 :(得分:8)

您需要将文档另存为Excel加载项(.xla)并进行分发。然后,用户可以Tools>Add-ins安装添加。他们需要浏览到您发送的文件,并验证加载项列表中是否已选中加载项。请注意,加载项不会显示在 Alt + F8 Tools>Macro中。您需要在加载项代码中为其创建一个菜单。看到这篇文章http://spreadsheetpage.com/index.php/tip/creating_custom_menus/

  

如果您希望代码在所有工作簿中都可用,请使用您的代码   PERSONAL.XLS Excel 2007-2010 您的PERSONAL.XLSB文件。这些通常保存在您的文档和设置下的XLSTART文件夹中。

这是一个隐藏的工作簿,在您启动Excel时会打开。 您在Excel中打开的所有工作簿中都可以使用此工作簿中复制的代码。

最简单的方法是录制虚拟宏,然后在Store The Macro下拉列表中选择Personal Macro Workbook。

打开宏编辑器( ALT + F9 ),然后保存PERSONAL.XLS文件。写一个宏,例如

Public Sub Testing()
    MsgBox "Hey im from Personal.xls"
End Sub
  

请记住隐藏名为personal.xlsWindow>>Hide)的工作簿。现在,在任何工作簿上,都可以使用此宏。

答案 1 :(得分:2)

你有两种选择;你可以

1)在你的personal.xlsb中包含你的宏,它将被隐藏,但可供你使用或

2)将你的宏包含在一个加载项文件中每次都会用excel启动。如果其他人想要使用您的宏,加载项文件可以为您提供易于分发的额外好处。

对于我正在构建的工具,我选择使用加载项文件和它的效果非常好。

将代码放在插件中的模块中,确保宏不是​​私有的,甚至可以在快速访问工具栏上创建一个易于使用的按钮。

问题解决了。

答案 2 :(得分:1)

如果personnal.xls解决方案不适合您的需求,您只需将宏保存到Excel工作簿,并要求用户在“其他”文档中工作时加载(打开)。登记/> 在这种情况下,您可能需要更正宏。例如:Thisworkbook替换Activeworkbook

答案 3 :(得分:1)

最简单,最好的方法是创建一个“commander”XLSM,它包含宏但没有数据。它只是打开指定的Excel文件并在它们上运行宏。您可以键入/粘贴特定文件的名称,也可以遍历整个目录等。在实际包含宏的工作簿上运行宏非常容易。下面这样的东西......小菜一碟。

Sub MultipleFileMacro()

Dim wb As Excel.Workbook
Dim fso As Scripting.FileSystemObject
Dim f As Scripting.File

   Set fso = New Scripting.FileSystemObject
   For Each f In fso.GetFolder("c:\samplefolder").Files
      Set wb = Excel.Workbooks.Open(f)

      MyMacro wb

      wb.Close
   Next f

End Sub
------------
Sub MyMacro(wb As Excel.Workbook)

   'do something here

End Sub

答案 4 :(得分:0)

如果要在多个工作簿中使用宏,请将其转换为AddIn或保存在Personal中。 Xlsb文件,如果数据库结构在其他工作簿中类似,那么你的宏会很有用,但总是要记住每个代码都有一个特定的任务,☺