Outlook の OpenSharedItem メソッドは、署名された.msg ファイルのファイル ハンドルを保持します
元の KB 番号: 2633737
現象
Microsoft Outlook のオブジェクト モデルのメソッドは OpenSharedItem
、Outlook がアイドル時間を取得するまで、.msg ファイルのファイル ハンドルを解放しません。
原因
この動作は、.msg ファイルが署名または暗号化されている (SMIME ベースのメッセージ) 場合に発生します。 これは、OUTLOOK が SMIME ベースの.msg ファイルの処理とファイル ハンドルを内部的に管理する方法の制限事項です。 Outlook はメッセージの署名のバックグラウンド検証を行い、Outlook がアイドル時間を取得したときにファイル ハンドルを.msg ファイルに解放します。 .msg ファイルは、Outlook が必要なすべての処理を完了し、ファイル ハンドルを解放した場合にのみ削除できます。
Outlook がファイル ロックを解除するタイミングを直接判断する方法はありませんが、ファイルの削除を遅らせることができます。
解決方法
この動作を変更する予定はありません。
詳細
Office Outlook 2007 および Outlook 2010 には、iCalendar (.ics) 予定ファイル、vCard (.vcf) ファイル、Outlook メッセージ (.msg) ファイルを開く方法が用意 OpenSharedItem
されています。 このメソッドによって返されるオブジェクトの種類は、開かれた共有アイテムの種類によって異なります。
次の Microsoft Visual Basic for Applications (VBA) Outlook の例では、 メソッドを使用してSignedMessage.msg ファイルがOpenSharedItem
開きます。 その後、コードはメール アイテムを閉じると、.msg ファイルの削除を試みます。 .msg ファイルが署名または暗号化されている場合、コードによって アクセス許可拒否エラーが 発生します。 ただし、署名されていないファイルまたは暗号化されていない.msg ファイルが開かれた場合、コードは.msg ファイルを想定どおりに削除します。
Public Sub TestOpenSharedItem()
Dim oNamespace As Outlook.NameSpace
Dim oSharedItem As Outlook.MailItem
Dim oFolder As Outlook.Folder
On Error GoTo ErrRoutine
' Get a reference to a NameSpace object.
Set oNamespace = Application.GetNamespace("MAPI")'Open the Signed Message (.msg) file containing the shared item.
Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\SignedMessage.msg")'Open the Regular Message (.msg) file containing the shared item.
'Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\RegularMessage.msg")
oSharedItem.Close (olDiscard)
Set oSharedItem = Nothing
'Add a reference to Microsoft Scripting Runtime
Dim oFSO As New FileSystemObject
' Try to delete the Signed Message
oFSO.DeleteFile ("C:\Temp\SignedMessage.msg")'Try to delete the Regular Message
'oFSO.DeleteFile ("C:\Temp\RegularMessage.msg")
EndRoutine:
On Error GoTo 0
Set oSharedItem = Nothing
Set oFSO = Nothing
Set oNamespace = Nothing
Exit Sub
ErrRoutine:
Select Case Err.Number
Case -2147024894 ' &H80070002
' Occurs if the specified file or URL could not
' be found, or the file or URL cannot be
' processed by the OpenSharedItem method.
MsgBox Err.Description, _
vbOKOnly, _
Err.Number & " - " & Err.Source
Case Else
' Any other error that may occur.
MsgBox Err.Description, _
vbOKOnly, _
Err.Number & " - " & Err.Source
End Select
GoTo EndRoutine
End Sub
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示