VBA覆盖Addin工作簿

时间:2018-01-30 22:13:56

标签: excel vba excel-vba

所以我做了一些研究,但是我无法获得我想要的功能。

我正在为网络上的很多人部署工作簿。我在所有工作簿引用的网络驱动器上都有一个加载项。它在运行宏时运行良好,完全没问题。我的问题是当人们打开其中一个工作簿时更新宏。人们有时会把东西打开几天,我知道,因为我有时会做同样的事情。

我找到了这个链接,下面的代码但是我无法让它工作。

https://www.excelguru.ca/content.php?152-Deploying-Add-ins-in-a-Network-Environment

宏将其另存为.xlsm或启用宏的工作簿。它不会将其保存为.xla

Sub DeployAddIn()
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: To deploy finished/updated add-in to a network
'               location as a read only file
    Dim strAddinDevelopmentPath As String
    Dim strAddinPublicPath As String

    'Set development and public paths
    strAddinDevelopmentPath = ThisWorkbook.Path & Application.PathSeparator
    strAddinPublicPath  = "F:\Addins" & Application.PathSeparator

    'Turn off alert regarding overwriting existing files
    Application.DisplayAlerts = False

    'Save the add-in
    With ThisWorkbook
        'Save to ensure work is okay in case of a crash
        .Save

        'Save read only copy to the network (remove read only property
        'save the file and reapply the read only status)
        On Error Resume Next
        SetAttr strAddinPublicPath & .Name, vbNormal
        On Error Goto 0
        .SaveCopyAs Filename:=strAddinPublicPath  & .Name
        SetAttr strAddinPublicPath & .Name, vbReadOnly
    End With

    'Resume alerts
    Application.DisplayAlerts = True
End Sub

我已经尝试过了

.SaveAs FileFormat:=xlAddIn

或者

.`SaveAs FileFormat:=18`

Niether的那些工作。 SaveCopyAs没有fileformat选项。

任何可能有效的建议或其他方法?

1 个答案:

答案 0 :(得分:0)

在您更新的本地计算机上保留XLAM的副本,然后在准备部署它时,将XLAM复制到服务器。其他人都运行服务器上的副本(你不希望他们将它复制到本地机器,顺便说一句) - 关键是当你把它复制到服务器时,你必须将它设置为只读文件属性。每次复制时都必须这样做。然后你可以随时覆盖它。

如果您有任何问题,请发表评论 - 我每天都会这样做。