ciao Massimiliano,
prova così.
crea una tabella t_accounts con questi due campi: id_accounts PK autonumber e outLookAccounts testo.
crea una form ed inserisci in essa una listbox chiamata lstAccounts numero colonne 2 dimensione 0;5.
copia il modulo che vedi sotto in un modulo standard e richiama su caricamento della form :
Private Sub Form_Load()
loadAccounts Me.lstAccounts
End Sub
la listbox dovrebbe popolarsi con gli accounts disponibili.
da qui credo ti sia facile selezionare dalla listbox l'account da cui mandare l'email.
Facci sapere.
Ciao, Sandro.
codice:
Option Compare Database
Option Explicit
Private OlApp As Object
Private folderOL As Object
Private namespaceOutlook As Object
'
Public Sub newOlIstance()
On Error Resume Next
Set OlApp = GetObject(, "Outlook.Application")
If OlApp Is Nothing Then
Set OlApp = CreateObject("Outlook.Application")
Set namespaceOutlook = OlApp.GetNamespace("MAPI")
Set folderOL = namespaceOutlook.GetDefaultFolder(0)
folderOL.Display
Else
Set namespaceOutlook = OlApp.GetNamespace("MAPI")
End If
End Sub
Public Sub loadAccounts(lst As Access.ListBox)
On Error GoTo errorLoadAccountHandler
newOlIstance
Dim i As Integer
Dim strAccounts As String
DBEngine(0).BeginTrans
For i = 1 To OlApp.Session.Accounts.Count
CurrentDb.Execute "insert into T_accounts (outLookAccounts) values ('" & OlApp.Session.Accounts.Item(i) & "')", dbFailOnError
Next i
DBEngine(0).CommitTrans dbForceOSFlush
lst.RowSourceType = "table/query"
lst.RowSource = "T_accounts"
ext_errorLoadAccountHandler:
Exit Sub
errorLoadAccountHandler:
DBEngine(0).Rollback
With Err
MsgBox "ERR#" & .Number _
& vbNewLine & .Description _
, vbOKOnly Or vbCritical
End With
Resume ext_errorLoadAccountHandler
End Sub