Access - sincronizar una tabla de access con outlook

 
Vista:

sincronizar una tabla de access con outlook

Publicado por Carlos (1 intervención) el 22/05/2007 21:46:37
Hola a todos, necesito que alguien me ayude con tun trabajo que tengo que hacer. Tengo que buscar la forma de sincronizar una tabla de access con la carpeta de contactos Outlook, es decir que cuanto actualize un contacto en access se modifique los contactos de outlook y viceversa. Encontre el siguiente codigo, pero no me corre.

Sub BuscarContactosDeBaseDeDatos()

'Establece las variables
Dim dbsBaseDeDatos As Database
Dim rstTablaBaseDeDatos As Recordset
Dim strTablaBaseDeDatos As String
Dim strCampoNombreCompletoDeTablaBaseDeDatos As String
Dim strConsultaCampoDeTablaBaseDeDatos As String

'Establece los valores de las variables
strTablaBaseDeDatos = "D:\Mis documentos\contactos.mdb"
strConsultaCampoDeTablaBaseDeDatos = "SELECT Contac.Nombre, Contac.Domicilio, Contac.[C Postal], Contac.Poblacion, Contac.Pais, Contac.Telefono1, Contac.Telefono2, Contac.Fax, Contac.EMail, Contac.[Pagina Web] FROM Contac ORDER BY Contac.Nombre"
'Copia una Sentencia SQL de Access
Set dbsBaseDeDatos = OpenDatabase(strTablaBaseDeDatos)
Set rstTablaBaseDeDatos = dbsBaseDeDatos.OpenRecordset(strConsultaCampoDeTablaBaseDeDatos, dbOpenSnapshot)

'Llena el Recordset
With rstTablaBaseDeDatos
.MoveLast
.MoveFirst
'Recorre todos los Registros y crea el contacto
For Contacto = 1 To .RecordCount
strCampoNombreCompletoDeTablaBaseDeDatos = !Nombre
.MoveNext
'Llama a la Rutina que crea el Contacto en Outlook
CrearContactoEnOutlook (strCampoNombreCompletoDeTablaBaseDeDatos)
Next Contacto
.Close
End With

'Cierra la base de datos abierta
dbsBaseDeDatos.Close

End Sub

Sub CrearContactoEnOutlook(strCampoNombreCompletoDeTablaBaseDeDatos As String)

'Establece los Objetos y carpetas de Outlook donde se van a crear los contactos
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(10)
Set myItem = myOlApp.CreateItem(olContactItem)

'Establece los valores de los Campos del Formulario Contactos de Outlook
With myItem.FullName = strCampoNombreCompletoDeTablaBaseDeDatos myItem.Save 'Salva los Objetos
End With
End Sub

El error me lo marca en la siguiente linea: "myItem.FullName = strCampoNombreCompletoDeTablaBaseDeDatos"

Espero que me puedan ayudar, de antemano gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Sincronizar tabla con contactos de Outlook

Publicado por Alejandro (4142 intervenciones) el 10/08/2023 20:31:54
El código que proporcionaste parece estar en buen camino, pero parece que hay un error en la línea donde asignas el valor a la propiedad `FullName` del objeto `myItem`. Aquí tienes la versión corregida del código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Sub BuscarContactosDeBaseDeDatos()
 
    ' Establece las variables
    Dim dbsBaseDeDatos As Database
    Dim rstTablaBaseDeDatos As Recordset
    Dim strTablaBaseDeDatos As String
    Dim strCampoNombreCompletoDeTablaBaseDeDatos As String
    Dim strConsultaCampoDeTablaBaseDeDatos As String
 
    ' Establece los valores de las variables
    strTablaBaseDeDatos = "D:\Mis documentos\contactos.mdb"
    strConsultaCampoDeTablaBaseDeDatos = "SELECT Contac.Nombre, Contac.Domicilio, Contac.[C Postal], Contac.Poblacion, Contac.Pais, Contac.Telefono1, Contac.Telefono2, Contac.Fax, Contac.EMail, Contac.[Pagina Web] FROM Contac ORDER BY Contac.Nombre"
 
    ' Copia una Sentencia SQL de Access
    Set dbsBaseDeDatos = OpenDatabase(strTablaBaseDeDatos)
    Set rstTablaBaseDeDatos = dbsBaseDeDatos.OpenRecordset(strConsultaCampoDeTablaBaseDeDatos, dbOpenSnapshot)
 
    ' Llena el Recordset
    With rstTablaBaseDeDatos
        .MoveLast
        .MoveFirst
        ' Recorre todos los Registros y crea el contacto
        Do While Not .EOF
            strCampoNombreCompletoDeTablaBaseDeDatos = !Nombre
            ' Llama a la Rutina que crea el Contacto en Outlook
            CrearContactoEnOutlook strCampoNombreCompletoDeTablaBaseDeDatos
            .MoveNext
        Loop
        .Close
    End With
 
    ' Cierra la base de datos abierta
    dbsBaseDeDatos.Close
 
End Sub
 
Sub CrearContactoEnOutlook(strCampoNombreCompletoDeTablaBaseDeDatos As String)
 
    ' Establece los Objetos y carpetas de Outlook donde se van a crear los contactos
    Dim myOlApp As Object
    Dim myNameSpace As Object
    Dim myFolder As Object
    Dim myItem As Object
 
    Set myOlApp = CreateObject("Outlook.Application")
    Set myNameSpace = myOlApp.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(10)
    Set myItem = myOlApp.CreateItem(2) ' Usar olContactItem en lugar de olContactItem
 
    ' Establece los valores de los Campos del Formulario Contactos de Outlook
    With myItem
        .FullName = strCampoNombreCompletoDeTablaBaseDeDatos
        .Save ' Salva los Objetos
    End With
 
    ' Liberar recursos
    Set myItem = Nothing
    Set myFolder = Nothing
    Set myNameSpace = Nothing
    Set myOlApp = Nothing
 
End Sub

He realizado algunas correcciones en el código, incluido el uso correcto del bucle `Do While Not .EOF` para recorrer los registros y crear contactos en Outlook. Además, he corregido el parámetro en la línea `Set myItem = myOlApp.CreateItem(2)` para crear un objeto de contacto en lugar de un elemento de contacto. Espero que esto resuelva el problema que estabas experimentando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar