Sto passato da office 2003 32bit a office 2010 a 64bit.
Ho una funzione che sia tramite access che excel invia una mail in modo automatico utilizzando outlook.
Passando alla versione 2010 64bit sto riscontrando un problema che non riesco a capire..
Vi passo il codice:
Funzione1 in access, valorizzo le variabili da trasportare in outlook, questa parte è OK.
Funzione2 in access, da qui verifico che il visual basic di outlook sia aperto e passo i parametri alla funzione contenente in esso..codice:Public Function invio_mail() Dim blnSuccessful As Boolean Dim strHTML As String Dim StyleO As String Dim CHIUDI As String Dim Style1 As String Dim Style1R As String Dim Style2 As String Dim Style2R As String Dim Inviato_a As String Dim Oggetto As String Dim Allegato As String Dim in_copia As String Dim in_copia_nascosta As String ' Apro il tag per compilare gli Stili StyleO = "<style type=" & """text/css""" & ">" CHIUDI = "</span>" ' CREO 2 STILI DI TESTO CHE RICHIAMO NEL CSS DELL'HTML Style1 = ".stile1{font-family:" & """Trebuchet ms""" & ",arial;font-size:1.0em;color:#000;}" ' TIPO STILE Style1R = "<span class=" & """stile1""" & ">" Style2 = ".stile2{font-family:" & """Trebuchet ms""" & ",arial;font-size:1.0em;color:#3C9;}" ' TIPO STILE Style2R = "<span class=" & """stile2""" & ">" ' SCRIVO IL MESSAGGIO DA INVIARE VIA EMAIL TRAMITE HTML strHTML = "<html><head>" & StyleO & Style1 & Style2 & "</style></head>" & _ "<body>" & _ Style1R & "Contenuto della mail" & CHIUDI & _ "</body></html>" Inviato_a = "mail@dominio.com" Oggetto = "Oggetto mail" Allegato = "" in_copia = "" in_copia_nascosta = "" blnSuccessful = FnSafeSendEmail(Inviato_a, Oggetto, strHTML, Allegato, in_copia, in_copia_nascosta) End Function
E' qui che si presenta il problema..codice:Public Function FnSafeSendEmail(strTo As String, _ strSubject As String, _ strMessageBody As String, _ Optional strAttachmentPaths As String, _ Optional strCC As String, _ Optional strBCC As String) As Boolean Dim objOutlook As Object Dim objNameSpace As Object Dim objExplorer As Object Dim blnSuccessful As Boolean Dim blnNewInstance As Boolean ' VERIFICO SE IL COMPILATORE DI OUTLOOK E' GIA' APERTO On Error Resume Next Set objOutlook = GetObject(, "Outlook.Application") On Error GoTo 0 ' SE OUTLOOK è CHIUSO LO APRO e creo una nuova istanza If objOutlook Is Nothing Then 'Outlook non è già in esecuzione - creare una nuova istanza ... Set objOutlook = CreateObject("Outlook.Application") blnNewInstance = True 'CREO un'istanza di ambiente di Visual Basic .. Set objNameSpace = objOutlook.GetNamespace("MAPI") Set objExplorer = objOutlook.Explorers.Add(objNameSpace.Folders(1), 0) objExplorer.CommandBars.FindControl(, 1695).Execute objExplorer.Close Set objNameSpace = Nothing Set objExplorer = Nothing End If ' AVVIO LA FUNZIONE INTERNA A OUTLOOK PER L'INVIO DELLA E-MAIL blnSuccessful = objOutlook.FnSendMailSafe(strTo, strCC, strBCC, strSubject, strMessageBody, strAttachmentPaths) ' CHIUDO TUTTO If blnNewInstance = True Then objOutlook.Quit Set objOutlook = Nothing FnSafeSendEmail = blnSuccessful End Function
quando il codice esegue questa istruzione Set objOutlook = GetObject(, "Outlook.Application") rileva correttamente outlook ma quando tento di passare il codice da access a outlook tramite questa stringa: blnSuccessful = objOutlook.FnSendMailSafe(strTo, strCC, strBCC, strSubject, strMessageBody, strAttachmentPaths) mi esce questo errore (Proprietà o metodo non supportati dall'oggetto)
Funzione presente in outlook:
- Per far funzionare il codice bisogna settare il livello di protezione della macro a LOW, già settato ma niente..codice:Public Function FnSendMailSafe(strTo As String, _ strCC As String, _ strBCC As String, _ strSubject As String, _ strMessageBody As String, _ Optional strAttachments As String) As Boolean On Error GoTo ErrorHandler: Dim MAPISession As Outlook.NameSpace Dim MAPIFolder As Outlook.MAPIFolder Dim MAPIMailItem As Outlook.MailItem Dim oRecipient As Outlook.Recipient Dim TempArray() As String Dim varArrayItem As Variant Dim strEmailAddress As String Dim strAttachmentPath As String Dim blnSuccessful As Boolean da qui continua il codice che invia la mail....
- Il codice lo devo utilizzare su Windows server 2008 64bit con office 2010 64bit, ho fatto un test anche sul seven a 64bit ma rilevo lo stesso problema..
- Non ho ancora avuto modo di fare un test con versioni a 32bit
Qualcuno è già incappato in questo problema o sa darmi qualche dritta per risolvere?
Grazie a tutti per l'attenzione

Rispondi quotando