2

使用 Windows 10(如果相关,请使用 Build 1903?)和 64 位 Office 365(可能相关?)我已经实现了一个允许我对 Excel VBA 代码进行版本控制的系统。

我正在使用该Workbook_BeforeSave方法检查当前文件是否保存,如果保存,则保存到哪里。

这可以正常工作,并会提示用户是否要更新其中包含的代码。然后我想也许我应该在提示用户之前检查代码是否“需要”更新。

首先,我发现了以下问题/解决方案:Using VBA to read the metadata or file properties of files in a SharePoint doc library

如果没有我可以从这里安装的 DSOFile.dll,我就无法使用它:

https://www.microsoft.com/en-us/download/details.aspx?id=8422

下面是我的代码不起作用:

Private Function CheckTemplateIsNewerThanCurrentFile(ByVal templatePath As String) As Boolean
    Dim templateName As String
    Dim fso As New FileSystemObject
    templateName = ActiveWorkbook.CustomDocumentProperties("TemplateName").Value
    If fso.FileExists(templatePath & "\" & LocalTemplateName) Then
        Dim objDSO As New DSOFile.OleDocumentProperties
        objDSO.Open templatePath & "\" & LocalTemplateName, True, dsoOptionDefault
        If Not objDSO.CustomProperties("LastCommitDate") = ActiveDocument.CustomDocumentProperties("LastCommitDate").Value Then
            CheckTemplateIsNewerThanCurrentFile = False
        Else
            CheckTemplateIsNewerThanCurrentFile = True
            TemplateLastCommitDate = objDSO.CustomProperties.Item("LastCommitDate")
        End If
    End If
End Function

这里(突出显示)是我尝试在 .xlsb 文件上运行上述方法时收到的错误:

错误信息

(FWIW:使用 .xlsb 格式的原因是因为我们在执行的过程中处理了 500K+ 行数据。是的,我知道 Excel 绝对不是用于此目的的工具,但我们被现在)

我知道我本可以尝试将文件格式更改为 .xlsm,但是因为该文件是受版本控制的,所以如果该方法仍然可能失败,这将是一件很痛苦的事情。

提前致谢,

亚历克斯。

4

0 回答 0