如何避免在保存到 SharePoint 时签出 Outlook 附件?

How do I avoid Outlook attachments being checked out when saving to SharePoint?

我目前在 Outlook 中使用 VBA 检查新邮件中是否包含具有特定名称的附件。如果找到,它会将它们保存到我的 I: 驱动器,该驱动器映射到 SharePoint 文件夹。它删除当前版本,并用新版本替换它。

一切正常,除了保存附件时,它们被签出给我。这会导致问题,因为在我进入并手动签入之前,其他用户无法看到它们。

我可以添加一些代码来避免结帐,或者自动检查 in/abandon 结帐吗?如果我有代码打开文件、签入文件并关闭文件,我知道该怎么做。但由于我经常在代码执行时积极地使用 PowerQuery,所以这并不是很理想。

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
    Dim oAttachment As Outlook.Attachment
    Dim sSaveFolder, SharePointDrive As String
    Dim Item As Object
    Dim UserDrives As Variant
    'Dim Item As Outlook.MailItem
    Dim olFolder As Outlook.MAPIFolder
    For Each UserDrives In CreateObject("Scripting.FileSystemObject").drives
        If UserDrives.DriveType = 3 And InStr(UCase(UserDrives.sharename), "SHAREPOINT") > 0 Then SharePointDrive = UserDrives.driveletter
    Next
    If Len(SharePointDrive) = 0 Then Exit Sub
    sSaveFolder = SharePointDrive & ":\Reference Files\"
    Set olFolder = Application.ActiveExplorer.CurrentFolder
    For Each Item In olFolder.Items
        If TypeOf Item Is Outlook.MailItem Then
            For Each oAttachment In Item.Attachments
                If oAttachment.DisplayName Like "*Pricing*" Then
                    Kill sSaveFolder & "PricingData.xlsx"
                    oAttachment.SaveAsFile sSaveFolder & "PricingData.xlsx"
                    Item.Delete
                ElseIf oAttachment.DisplayName Like "*Mileage*" Then
                    Kill sSaveFolder & "Mileage.xlsx"
                    oAttachment.SaveAsFile sSaveFolder & "Mileage.xlsx"
                    Item.Delete
                End If
            Next oAttachment
        End If
    Next Item
End Sub

Outlook 对象模型不提供任何用于在 SharePoint 中签入或签出文件的功能。

作为一种可能的解决方法,您可以考虑将附件保存到任何本地文件夹中,然后通过替换那里的旧文件以编程方式将它们移动到映射的文件夹中。