独立于特定工作簿的VBA Excel 2003macros

好的,所以我写了一个macros,在从我编写的工作簿启动时工作正常。但是,我需要macros可以在各种工作簿中工作。

我已经把macros移到了隐藏的“个人”工作簿上,但是现在当代码引用“ThisWorkBook”时,是的,它指向了个人工作簿。

我曾经想过创build一个工作簿variables并指向工作簿的地址/名称,但这有所不同(工作簿由系统生成,而工作簿的名称取决于生成的时间/date)。

作为参考,我想在Excel中的工具栏上放一个button,当用户点击它时,它会运行这个macros。 有没有,也许,有一种方法来获取调用macros的工作簿的名称?

谢谢,山姆。

如果在工作簿A(数据工作簿)中有一个命名约定,则可以执行以下更改以识别工作簿A.

Dim wbA As Workbook 'workbook A ( the data workbook) Dim wb As Workbook For Each wb In Workbooks 'loop through all opened workbooks, matching the name If InStr(wb.Name, "ABC") > 0 Then Set wbA = wb Exit For End If Next wb 

然后用wbAreplace“ThisWorkBook”

活动的命令,这将允许您引用代码被调用的工作簿和工作表。

 ActiveCell ActiveChart ActiveEncryptionSession ActivePrinter ActiveProtectedViewWindow ActiveSheet ActiveWindow ActiveWorkbook 

Application对象的所有属性

你也可以使用VBS而不是macros。 语言几乎完全相同,您的脚本将独立于您的工作簿。

至于识别哪个文件来运行macros(没有你的数据和代码的例子,很难具体),你可以浏览你想要的文件。

 Dim objShell Set objShell = CreateObject("Shell.Application") Dim strFileName Dim strFilePath Dim dPicker Set dPicker = objShell.BrowseForFolder(0, "Choose a file:", &H4000) strFilePath = dPicker.self.Path 'will give you the file path of the file you choose, 'which you can then use to open/access the file with 'the data you need. 'Code Set dPicker = Nothing 

如果您想坚持一个macros,您可以检出FileDialog对象以使用VBA中的文件选取器。

要获取VBA中打开工作簿的文件名和/或path,请使用

  ActiveWorkbook.Name ActiveWorkbook.Path 

希望这可以帮助!

只需用“ActiveWorkbook”replace“ThisWorkbook”。