24. september 2006 - 13:47Der er
6 kommentarer og 1 løsning
Kan ikke åbne outlook efter at have konverteret til 2003
Hejsa (Jeg har også dette spørgsmål åbent under /office/ men kom i tanke om at det nok hørte mere hjemme her)
Jeg har konverteret fra office 2000 til 2003. Fra min crm applikation lavet i acces kan jeg sende mails, via vba kode hvor jeg åbner en outlook session. I 2003 kan jeg ikke åbne outlook efter at have sendt emails fra access, jeg får fejlen "Handlingen lykkes ikke". Når jeg lukker access kan jeg igen åbne outlook. Det er som om der er en lås på som skal frigives, efter jeg har konverteret til 2003.
Public Sub fMakeEMail(strRecipient As String, Optional strSubject As String, Optional astrAttachments As Variant) Set objOLMailItem = New clsOutlook objOLMailItem.CreateMail strRecipient, strSubject, , astrAttachments End Sub
Private Sub mobjOLApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objNamespace As Outlook.NameSpace Dim objInbox As Outlook.MAPIFolder Dim objSentFolder As Outlook.MAPIFolder Dim strLeftSubject As String
On Error GoTo Mail_Send_Err:
Set objNamespace = mobjOLApp.GetNamespace("MAPI")
'This is the Inbox folder. Set objInbox = objNamespace.GetDefaultFolder(olFolderInbox) Set objSentFolder = objInbox.Parent.Folders.Add("folder") Set objSentFolder = objInbox.Parent.Folders("folder") Set Item.SaveSentMessageFolder = objSentFolder
' Clean up objects that are created in this subroutine. Set objInbox = Nothing Set objSentFolder = Nothing Set objNamespace = Nothing
' Save the MailItem object as msg-file in the temp-directory - first check for Null-pointers If Item.Subject = "" Then Item.Subject = Item.Recipients(1) End If If Item.Body = "" Then Item.Body = " " End If ' Check if folder exists - if not, create it. If Not fIsFileDIR(getdriveletter & ":\" & strSaveEMailTemp, vbDirectory) Then Dim objFileSystem As Object Dim objNewFolder As Object Set objFileSystem = CreateObject("Scripting.FileSystemObject") Set objNewFolder = objFileSystem.CreateFolder(getdriveletter & ":\" & strSaveEMailTemp) Set objFileSystem = Nothing Set objNewFolder = Nothing End If ' Save item as Outlook message file Item.SaveAs getdriveletter & ":\" & strSaveEMailTemp & Item.Subject & ".msg", olMSG ImportMail getdriveletter & ":\" & strSaveEMailTemp & Item.Subject & ".msg", Left$(Item.Body, 30)
Mail_Send_Exit: Set mobjOLApp = Nothing 'To make individually Outlook handling possible Exit Sub
Mail_Send_Err: Select Case err.Number Case -2147352567: '"folder"-folder allready exists Resume Next Case Else MsgBox err.Number & ": " & err.Description, vbInformation, "Fejl i Mail-funktion" Resume Mail_Send_Exit End Select End Sub
Dont think all the code is here, but it maybe isnt necessary.
I think you have a class module somewhere in your application. This is very likely opening Outlook and not closing it again, it is opened but not visible. If you go into Task manager after you have run the code you will very likley see Outlook is running although it snot visible.
So you need to make sur ethat ALL obejcts are set to Nothing and that Outlook is close.
Thanks a lot Terry Your suggestion worked. When I do an outlook.quit as the last thing before quitting ITEMSEND the "invisible" session is killed. In former versions this must have been included since I did not have the problem running 2000. Im sorry not answering you before now, but I have "parked" this problem for a time because of other work but also, I must admit, because I thaught that an/all existing outlook session would be closed but when I tested your approach today I reconigsed, that they keep running :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.