在不同的excel文件中使用一个macros
我写了一个macros,我想在不同的excel文件中使用,它具有几乎相同的表结构,但数据不同。
那么是否有可能只是“包含”我的macros脚本到任何Excel文件?!
我已经读过这个技巧了,但对我来说听起来像是一个坏玩笑。
谢谢
您需要将文档另存为Excel加载项(.xla)并将其分发。 用户可以使用Tools>Add-ins
来安装Tools>Add-ins
。他们需要浏览到您发送给他们的文件,并validation插件列表中是否选中加载项。 请注意,加载项不会显示在Alt + F8或Tools>Macro
。 您需要在您的加载项代码中为此创build一个菜单。 看到这个posthttp://spreadsheetpage.com/index.php/tip/creating_custom_menus/
如果您希望您的代码在所有工作簿中均可用,请使用
PERSONAL.XLS
或在Excel 2007-2010中使用PERSONAL.XLSB
文件。 这些文件通常保存在文件和设置下的XLSTART
文件夹中。
这是一个隐藏的工作簿,当您启动Excel时打开。 您在Excel中打开的所有工作簿中都提供了您在此工作簿中复制的代码。
制作一个最简单的方法是logging一个虚拟macros,然后在“存储macros”下拉列表下select个人macros工作簿。
打开macros编辑器( ALT + F9 ),然后保存PERSONAL.XLS
文件。 写一个macros,例如
Public Sub Testing() MsgBox "Hey im from Personal.xls" End Sub
请记住隐藏名为
personal.xls
的工作簿(Window>>Hide
)。 现在在任何工作簿上,这个macros是可用的。
你有两个select, 您可以
1)将您的macros包含在您的personal.xlsb中,该macros将被隐藏,但可供您使用或
2)把你的macros包含在一个每次启动excel的加载文件中。 如果其他人想要使用您的macros,插件文件可以为您提供简单分发的额外好处。
对于我正在构build的工具,我select使用一个加载项文件,它的工作很好。
把你的代码放在插件中的一个模块中,确保macros不是私有的,你甚至可以在快速访问工具栏上制作一个button以方便使用。
问题解决了。
如果personnal.xls解决scheme不适合您的需要,您可以将macros保存到一个Excel工作簿,并要求用户在“其他”文档中加载(打开)。
在这种情况下,您可能需要更正您的macros。 例如:用Thisworkbook
replaceThisworkbook
。
最简单,最好的方法是创build一个包含macros但不包含数据的“指挥官”XLSM。 它所做的只是打开指定的Excel文件并在其上运行macros。 您可以键入/粘贴特定文件的名称,也可以循环遍历整个目录等。在不同的工作簿上运行macros比在实际包含该macros时更容易。 像下面这样的东西…一块蛋糕。
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
如果要在多个工作簿中使用macros,请将其转换为AddIn或保存在Personal中。 Xlsb文件,如果其他工作簿中的数据库结构类似,那么您的macros将是有用的,但始终记住每个代码有一个特定的任务,☺