2

Windows 10 (関連する場合はビルド 1903?) と 64 ビット Office 365 (おそらく関連する?) を使用して、Excel VBA コードのバージョン管理を可能にするシステムを実装しました。

メソッドを使用してWorkbook_BeforeSave、現在のファイルが保存されているかどうか、保存されている場合はどこに保存されているかを確認しています。

これは正常に機能し、含まれているコードを更新するかどうかをユーザーに尋ねます。次に、ユーザーにプロンプ​​トを表示する前に、コードを更新する必要があるかどうかを実際に確認する必要があるのではないかと考えました。

最初に、次の質問/解決策を見つけました: VBA を使用して、SharePoint ドキュメント ライブラリ内のファイルのメタデータまたはファイル プロパティを読み取る

ここからインストールできた 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 形式を使用する理由は、実行中のプロセスで 50 万行以上のデータを扱っているためです。はい、Excel がこのためのツールではないことはわかっていますが、私たちは苦労していますそれは今)

ファイル形式を .xlsm に変更することもできたはずですが、このファイルはバージョン管理されているため、この方法でも失敗する可能性がある場合は面倒です。

前もって感謝します、

アレックス。

4

0 に答える 0