使用 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,但是因为该文件是受版本控制的,所以如果该方法仍然可能失败,这将是一件很痛苦的事情。
提前致谢,
亚历克斯。