Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Původní číslo KB: 2633737
Příznaky
Metoda OpenSharedItem
v objektovém modelu aplikace Microsoft Outlook neuvolní popisovač souboru .msg, dokud aplikace Outlook nezískne nějakou dobu nečinnosti.
Příčina
K tomuto chování dochází, pokud je soubor .msg podepsaný nebo šifrovaný (zprávy založené na SMIME). Jedná se o omezení způsobu, jakým Outlook interně spravuje zpracování a zpracování souborů .msg založených na SMIME. Outlook provede ověření podpisu ve zprávě na pozadí a uvolní popisovač souboru .msg souboru, když Outlook získá určitou dobu nečinnosti. Soubor .msg lze odstranit pouze v případě, že Aplikace Outlook dokončila veškeré požadované zpracování a vydala popisovač souboru.
Pokus o odstranění souboru můžete odložit, i když neexistuje žádný přímý způsob, jak určit, kdy Outlook uvolní zámek souboru.
Řešení
Toto chování není v plánu změnit.
Další informace
Office Outlook 2007 a Outlook 2010 poskytují OpenSharedItem
metodu pro otevření souborů událostí iCalendar (.ics), souborů vCard (.vcf) a souborů zpráv Outlooku (.msg). Druh objektu, který je vrácen touto metodou, závisí na druhu sdílené položky, která je otevřena.
V následujícím příkladu Aplikace Microsoft Visual Basic for Applications (VBA), který následuje, kód otevře soubor SignedMessage.msg pomocí OpenSharedItem
metody . Kód se pak pokusí odstranit soubor .msg poté, co zavře položku pošty. Pokud je soubor .msg podepsaný nebo zašifrovaný, kód způsobí chybu Oprávnění odepřeno . Pokud je však otevřen nepodepsaný nebo nešifrovaný soubor .msg, kód odstraní .msg soubor podle očekávání.
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