** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Obtener lista de las cuentas de usuario de Correo
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoObtener lista de las cuentas de usuario de Correo

 Responder Responder
Autor
Mensaje
McPegasus Ver desplegable
Habitual
Habitual


Unido: 02/Abril/2007
Localización: España
Estado: Sin conexión
Puntos: 81
Enlace directo a este mensaje Tema: Obtener lista de las cuentas de usuario de Correo
    Enviado: 26/Mayo/2020 a las 10:48
Hola

Con el siguiente código obtengo una lista de las cuentas de correo que hay configuradas en un equipo, todo bien cuando tengo la referencia a MS Outlook 16.0 Object Library.

Pero necesito utilizar la aplicación en un equipo que está en runtime, en esta caso no es importante que NO funcione el obtener la cuenta de usuario por lo que si la función no funciona no es un problema por lo que desactivo la referencia a MS.

Para que no pete en runtime declaro las variables como Object, pero al intentar asignar a la variable el tipo de objeto a utilizar se produce el error "El componente ActiveX no puede crear el objeto".

¿Se os ocurre como solucionarlo o utilizar otro procedimiento que pueda conseguir el objetivo propuesto?

Public Function mcGetConocerCuentaUsuario_Prueba() As String
    
'    Dim olkNms                                      As Outlook.NameSpace
    Dim olkNms                                      As Object
    
'    Dim olkFolderUserAccount                        As Outlook.Folder               'Conocer las cuentas de correo que hay configuradas en Outlook.
    Dim olkFolderUserAccount                        As Object                       'Conocer las cuentas de correo que hay configuradas en Outlook.
    
    Dim strWork                                     As String

'    Set olkNms = Outlook.GetNamespace("MAPI")
    Set olkNms = CreateObject("MAPI.Session")

    For Each olkFolderUserAccount In olkNms.Folders
        If strWork = "" Then
            strWork = olkFolderUserAccount.Name
        
        Else
            strWork = strWork & ";" & olkFolderUserAccount.Name
        
        End If
            
    Next olkFolderUserAccount

    mcGetConocerCuentaUsuario_Prueba = strWork

    Set olkFolderUserAccount = Nothing
    Set olkNms = Nothing

End Function
Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 26/Mayo/2020 a las 10:56

Namespace y OutlookAccount deben ser Variant. Yo utilizo este código

Function OLK_DevuelveCuentas() As String
    ' Función que devuelve las cuentas de la máquina actual como una cadena de texto separada por ;
    Dim olkApp As Object
    Dim olkNs As Variant
    Dim strCuentas As String
    Dim olkAccount As Variant
    
    Set olkApp = CreateObject("Outlook.Application")
    Set olkNs = olkApp.GetNamespace("MAPI")
    
    strCuentas = ""
    For Each olkAccount In olkApp.Application.Session.Accounts
        strCuentas = strCuentas & ";" & olkAccount.SmtpAddress
    Next
    
    OLK_DevuelveCuentas = Mid(strCuentas, 2)
End Function
Xavi, un minyó de Terrassa

Mi web
Arriba
McPegasus Ver desplegable
Habitual
Habitual


Unido: 02/Abril/2007
Localización: España
Estado: Sin conexión
Puntos: 81
Enlace directo a este mensaje Enviado: 26/Mayo/2020 a las 11:04
Gracias mádquina Tongue

Me faltaba declarar primero la aplicación ;) y luego asignar el MAPI, me iba directo a lo segundo Sleepy

    Set olkApp = CreateObject("Outlook.Application")
    Set olkNs = olkApp.GetNamespace("MAPI")

Que tengas un magnifico día.

Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable