Excel - Automacro no ejecuta con Referencias ADO de por medio

 
Vista:
sin imagen de perfil
Val: 92
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Automacro no ejecuta con Referencias ADO de por medio

Publicado por Miguel (55 intervenciones) el 04/05/2019 19:03:31
Hola a todos, buen día.
Tengo un nuevo problema y espero poder contar con sus comentarios experiencia y ayuda para poder dilucidar o solucionar este inconveniente..de antemano les agradezco mucho por su gran ayuda.

Tengo una hoja excel la cual mediante un boton y macro, leo una consulta algo compleja de access y me trae datos de dicha base y los coloca en otra hoja excel de mi libro ("DatosOrigen"). Es esta hoja "DatosOrigen" la fuente para poder hacer algunos análisis y cálculos. Esto funciona sin ningún problema al ejecutar ese botón y macro

El problema esta en que deseo que se autoejecute cada vez que abro el libro, es decir se actualice la hoja de datos "DatosOrigen" pero cuando lo he hecho, me sale un error y que rastreando por pasos es al parecer la conexion con la base de datos. Debo asumir que entonces el problema esta con las referencias ADO y las instrucciones de conexión que utilizo en la macro que lee la consulta de access

Adjunto las instrucciones y las imagenes para que puedan ver donde me da el error. Me parece tiene que ver con las referencias y las instrucciones que se deinen previamente para poder conectarse con la base de datos de access

REITERO: si la ejecuto sin automacro, lo hace sin ningún problema. Ojala puedan ayudarme


Option Explicit
' Macro que permite acceder a los datos de una BD de Access
' Paso 1:Declarar Variables
Dim cnn As New ADODB.Connection
Dim recSet As New ADODB.Recordset
Dim strDB, strSQL, MiRuta, strTabla As String
Dim bBien As Boolean



Sub TraeDatosPoc()

On Error GoTo ControlError
bBien = True

'*****>> PASO 1: Identificar la base de datos y conectarse

MiRuta = Range("M1").Value ' en dicha celda hay una ruta donde esta la base de datos access
cnn.Provider = "Microsoft.Jet.OLEDB.4.0" ' Esto es para access 2003 (.mdb)

If Right(MiRuta, 1) = "\" Then
cnn.Properties("Data Source") = MiRuta & "Help FProduccion.mdb"
Else
cnn.Properties("Data Source") = MiRuta & "\Help FProduccion.mdb"
End If

' En caso que la base de datos tenga una contraseña, se debe poner aqui
cnn.Properties("Jet OLEDB:Database Password") = ""
cnn.Open

Application.ScreenUpdating = False

' Consulta de access que traerá los datos
strTabla = "[Ult Datos POC]"
strSQL = "SELECT * FROM " & strTabla & " "
recSet.Open strSQL, cnn



Hasta este punto es donde ya da el error, al parecer no carga las referencia ADO o no lee las variables de conexion que estan arriba debajo de option explicit

Intente poner toda la rutina en la automacro pero tampoco funciona
intente poner en la automacro todas las vriables e instruccones de conexion y tampoco funciona
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 Antoni Masana
Val: 4.151
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Automacro no ejecuta con Referencias ADO de por medio

Publicado por Antoni Masana (1459 intervenciones) el 06/05/2019 10:10:31
Por lo que veo no entiendo cual puede ser el problema.

Si al pulsar el botón ejecuta la macro TraerDatosPoc y al abrir el libro ejecutas la misma macro no se cual puede ser la diferencia.

Prueba esto:

1
2
3
If Right(MiRuta, 1)  <> "\" Then MiRuta = MiRuta + "\"
MsgBox MiRuta
cnn.Properties("Data Source") = MiRuta

Acabo de escribir esto y me doy cuenta de cual es el error, es tan evidente que no lo había visto: ¿De donde toma el valor esta línea?

1
MiRuta = range("M1").value

Falta algo tan simple como:

1
MiRuta = Sheets("____").Range("M1").value

NOTA: Entre comillas tiene que ir el nombre de la hoja.

Cuando la hoja es la activa funciona y cuando no lo es no funciona y al abrir el libro no hay ninguna hoja activa.


Saludos.
\\//_
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