Hola a tod@s, ojala pudieran ayudarme con el siguiente inconveniente.
Tengo el siguiente código que desde Vba Excel me permite realizar una consulta SQL Access donde primero se obtiene un listado de códigos de productos en Excel de la hoja activa para luego coincidir la información con tablas de una base de datos en Access en un determinado servidor.
Dim Planilla As String
Dim conexion As Object
Dim cadenaConexion As String
Dim consulta As String
Dim Periodo As Integer
Dim UltL As Long
Dim strFile As String
Set conexion = CreateObject("ADODB.connection")
strFile = ActiveWorkbook.FullName
Periodo = UserForm3.TextBox5.Value
UltL = Sheets("MAR-FABRICANDO-V").Range("C" & Rows.Count).End(xlUp).Row
Sheets.Add.Name = "MULTIEM"
Planilla = "[Excel 8.0; HDR=Yes; Imex=1; DATABASE=" & strFile & "].[MAR-FABRICANDO-V$C1:C" & UltL & "] AS PF"
cadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Srvmultiem\mgalpon\BODEGA-DSK\A2021\INGRESOS2021.mdb"
L1 = "SELECT PF.OEM, TB.[COD CLIENTE], TB.[PU], TB.[TC] " & Chr(10)
L2 = "FROM " & Planilla & Chr(10)
L3 = "Left Join " & Chr(10)
L4 = "(SELECT T2.CODIGO, T2.[COD CLIENTE], T3.[PU], T5.[TC] " & Chr(10)
L5 = "FROM (((SELECT T1.CODIGO, T1.[COD CLIENTE], MAX(T1.FECHA) AS [ULTFV] " & Chr(10)
... 'Continua más sentencia; pero no es necesario que la muestre.
consulta = L1 & L2 & ...
conexion.Open cadenaConexion
Set Recordset = conexion.Execute(consulta)
Entonces el inconveniente se presenta en la siguiente sentencia :
conexion.Open cadenaConexion ó Set Recordset = conexion.Execute(consulta)
con el siguiente mensaje: "Error en el método Open de objeto_connection"
Por alguna razón, que desconozco, ejecuto otras macros que realizan consulta SQL Access y no se presenta inconvenientes. También sucede que a veces la macro si se ejecuta con normalidad y a veces no, que es lo que me desconcierta mucho. Por ejemplo, al archivo Excel lo guardo con el siguiente nombre "Trabajo de Oficina" y resulta que la macro funciona con normalidad y si guardo con un nombre mas corto o si el archivo Excel que abro es desde una carpeta compartida la macro no funciona (aunque a veces sí ?, y esto me quema el cerebro).
Creo que el problema esta en la siguiente sentencia:
Hola a tod@s, ojala pudieran ayudarme con el siguiente inconveniente.
Tengo el siguiente código que desde Vba Excel me permite realizar una consulta SQL Access donde primero se obtiene un listado de códigos de productos en Excel de la hoja activa para luego coincidir la información con tablas de una base de datos en Access en un determinado servidor.
Dim Planilla As String Dim conexion As Object Dim cadenaConexion As String Dim consulta As String Dim Periodo As Integer Dim UltL As Long Dim strFile As String Set conexion = CreateObject("ADODB.connection") strFile = ActiveWorkbook.FullName Periodo = UserForm3.TextBox5.Value UltL = Sheets("MAR-FABRICANDO-V").Range("C" & Rows.Count).End(xlUp).Row Sheets.Add.Name = "MULTIEM" Planilla = "[Excel 8.0; HDR=Yes; Imex=1; DATABASE=" & strFile & "].[MAR-FABRICANDO-V$C1:C" & UltL & "] AS PF" cadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Srvmultiem\mgalpon\BODEGA-DSK\A2021\INGRESOS2021.mdb" L1 = "SELECT PF.OEM, TB.[COD CLIENTE], TB.[PU], TB.[TC] " & Chr(10) L2 = "FROM " & Planilla & Chr(10) L3 = "Left Join " & Chr(10) L4 = "(SELECT T2.CODIGO, T2.[COD CLIENTE], T3.[PU], T5.[TC] " & Chr(10) L5 = "FROM (((SELECT T1.CODIGO, T1.[COD CLIENTE], MAX(T1.FECHA) AS [ULTFV] " & Chr(10) ... 'Continua más sentencia; pero no es necesario que la muestre. consulta = L1 & L2 & ... conexion.Open cadenaConexion Set Recordset = conexion.Execute(consulta)
Entonces el inconveniente se presenta en la siguiente sentencia :
conexion.Open cadenaConexion ó Set Recordset = conexion.Execute(consulta)
con el siguiente mensaje: "Error en el método Open de objeto_connection"
Por alguna razón, que desconozco, ejecuto otras macros que realizan consulta SQL Access y no se presenta inconvenientes. También sucede que a veces la macro si se ejecuta con normalidad y a veces no, que es lo que me desconcierta mucho. Por ejemplo, al archivo Excel lo guardo con el siguiente nombre "Trabajo de Oficina" y resulta que la macro funciona con normalidad y si guardo con un nombre mas corto o si el archivo Excel que abro es desde una carpeta compartida la macro no funciona (aunque a veces sí ?, y esto me quema el cerebro).
Creo que el problema esta en la siguiente sentencia:
Planilla = "[Excel 8.0; HDR=Yes; Imex=1; DATABASE=" & strFile & "].[MAR-FABRICANDO-V$C1:C" & UltL & "] AS PF"
Ya que las demás macros que utilizo para extraer información mediante SQL Access no tomo en cuenta información desde un archivo Excel.
Información adicional de los archivos con los que trabajo:
-Excel 2016 (32bits)
-Access (.mdb) (32bits) (del servidor)
Saludos