【发布时间】:2016-11-16 21:40:52
【问题描述】:
我们希望将它们存储在一个全局工作簿中,而不是将所有宏存储在每个工作簿中。我们尝试使用 Personal.xlsb 文件,但是每次 excel 崩溃或系统管理员使用 excel 打开时强制重新启动它都会创建个人.v.01 ....v.100 文件,并且它们相互干扰,被损坏等等。所以相反,我们正在尝试向我们制作的每个 excel 工作簿添加一个小宏,然后应该打开一个包含所有宏的全局 excel 工作簿,但是它没有打开它(normal.xlsb),问题出在哪里?如果我手动运行它工作正常,它只是不会自动运行..
Option Explicit
Public Sub Workbook_Open()
Dim sFullName As String
Dim xlApp As Excel.Application
Dim wbReturn As Workbook
sFullName = "Z:\Dokumentstyring\normal.xlsb"
Set xlApp = GetObject(, "Excel.Application") 'need to do so to open it in same instance otherwise the global macros can not be called.
Set wbReturn = xlApp.Workbooks.Open(filename:=sFullName, ReadOnly:=True)
If wbReturn Is Nothing Then
MsgBox "Failed to open workbook, maybe z drive is down?"
Else
ThisWorkbook.Activate'Dont know how to pass object to modules, so instead activate it and in createbutton set wb= activeworkbook..
Application.Run ("normal.xlsb!CreateButtons")
End If
End Sub
Public Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wb As Workbook
For Each wb In Application.Workbooks
If InStr(UCase(wb.Name), "PARTSLIST") > 0 And wb.Name <> ThisWorkbook.Name Then Exit Sub
Next wb
On Error Resume Next
Workbooks("normal.xlsb").Close
Workbooks("filter.xlsx").Close
End Sub
【问题讨论】:
-
您是否尝试过使用
AddIn?那里的所有宏,然后引用它,然后MYAddInName.MyFunctionName(x,y,z)等 -
您是唯一会打开/使用个人 Excel 文件的人吗?
-
@Nathan_Sav 如何在网络驱动器上发布新版本的插件,而无需用户打开他们的 Excel 并链接到新版本?不,我们有 50 个人在使用 personal.xlsb 文件,因此移至我们以只读方式打开的 normal.xlsb 文件
-
通过在网络位置使用插件自然会发生。有时要获得更强大的解决方案,需要付出一些努力。
-
@Nathan_Sav 这正在成为关于集中提供的 Master-Excel 文件的插件的无休止讨论,这并不是 StackOverflow 真正追求的目标:stackoverflow.com/tour 我实际上也支持这些集中提供主 Excel 文件。它们在企业环境中更容易维护(如果您在全球本地管理的 LAN 中安装了 Excel)。然而,我们将所有必要的数据导入到 Master-Excel 文件中,而不是将宏导入到其他文件中。然而,这是另一个网站的问题。让我们尝试帮助 OP 解决所提出的问题