如何避免在保存到 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 中签入或签出文件的功能。
作为一种可能的解决方法,您可以考虑将附件保存到任何本地文件夹中,然后通过替换那里的旧文件以编程方式将它们移动到映射的文件夹中。
我目前在 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 中签入或签出文件的功能。
作为一种可能的解决方法,您可以考虑将附件保存到任何本地文件夹中,然后通过替换那里的旧文件以编程方式将它们移动到映射的文件夹中。