Imprimir página | Cerrar ventana

Object reference not set to an instance of an obje

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y Otros sistemas
Descripción del foro: Proyectos ADP & Sql Server, Mysql& Access, MSDE
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=79465
Fecha de impresión: 10/Julio/2020 a las 02:43


Tema: Object reference not set to an instance of an obje
Publicado por: alexsc
Asunto: Object reference not set to an instance of an obje
Fecha de publicación: 13/Agosto/2014 a las 20:07
Buen dia:

He construido una reporteador en Acces 2007 con formularios VBA, el cual extrae consultas de tablas especificas conectandose a una base de datos SQL Server 2012 y exporta los datos a libros de Excel 2007

Resulta que al ejecutar la exportacion de una consulta, me sale el error:

Error: Object reference not set to an instance of an object

Si rapidamente le doy click en Aceptar en la ventana del error, la ejecucion de la macro continua y me exporta los datos a excel

Si me demoro en hacerlo, me sale el error 429 en tiempo de ejecucion: El componente ActiveX no puede crear el objeto y se detiene la ejecucion de la macro en la linea: Set appExcel = CreateObject("Excel.Application")

Podrian por favor ayudarme a resolver ese error para que la macro funcione perfectamente?? Ya he revisado y no le encuentro nada raro

Les agradezco mucho su valiosa y pronta respuesta. Saludos



-------------
"El espiritu de lucha es lo que nos impulsa cada día a emprender nuevos retos..."



Alexsc

Bogotá - Colombia



Respuestas:
Publicado por: admin
Fecha de publicación: 14/Agosto/2014 a las 16:26
Hola...puedes empezar comprobando ésto...sobre todo la última parte del escrito.

http://support.microsoft.com/kb/244264/es


Publicado por: alexsc
Fecha de publicación: 15/Agosto/2014 a las 00:14
Hola Admin

Muchas gracias por tu respuesta

Ya hice las verificaciones del articulo que me referenciaste pero aun continua presentandose el error... Saludos



-------------
"El espiritu de lucha es lo que nos impulsa cada día a emprender nuevos retos..."



Alexsc

Bogotá - Colombia


Publicado por: admin
Fecha de publicación: 15/Agosto/2014 a las 08:17
Hola de nuevo. ¿Puedes poner completo el código y/o las acciones de esa ¿¿Macro?? ?


Publicado por: alexsc
Fecha de publicación: 15/Agosto/2014 a las 15:08
Buen dia Admin:

El siguiente es el codigo de la macro en Access:

Function Exportacion(strSQL As String)
Dim cadSQL As String
cadSQL = strSQL
Call ExportarAExcelGlobal(cadSQL)
End Function

Sub ExportarAExcelGlobal(cadSQL)
Dim appExcel As Excel.Application
Dim fila As Integer
Dim columna As Integer
Dim fechasistema As Date
Dim nombrehoja As String

Dim conn As ADODB.Connection
Dim RS As ADODB.Recordset
Dim fld As ADODB.Field
Dim strconn As String

strconn = "Driver={SQL Server Native Client 11.0};Server=192.168.0.80;Database=MYBD_SQLSERVER;Uid=USERADMINSQL;Pwd=12345678"
Set conn = New ADODB.Connection
conn.Open (strconn)

   ' abrimos excel, lo hacemos visible y abrimos el libro
   ' que nos interesa
  
   Set appExcel = CreateObject("Excel.Application")
   appExcel.Visible = True
   appExcel.Workbooks.Add
  
   nombrehoja = appExcel.ActiveWorkbook.ActiveSheet.Name
  
   ' abrimos la tabla, consulta o cadena sql en un
   ' recordset
   Set RS = conn.Execute(cadSQL)
  
   'capturamos la fecha automaticamente del sistema
   fechasistema = Now()
  
   ' ponemos nombre a las columnas de la hoja igual que el
   ' nombre de los campos de la consulta
   fila = 1
   columna = 1
   DoCmd.OpenForm ("FrmGigAnimado"), acNormal
   With appExcel.Sheets(nombrehoja)
      .Select
      .cells(fila, columna) = "NOMBRE EMPRESA"
      .cells(fila, columna).Font.Bold = True
      .cells(fila, columna).Font.Size = 14
      appExcel.Range(.cells(fila, columna), .cells(fila, columna + 1)).MergeCells = True
      fila = fila + 1
      .cells(fila, columna) = "Reporte RRHH"
      .cells(fila, columna).Font.Bold = True
      .cells(fila, columna).Font.Size = 13
      appExcel.Range(.cells(fila, columna), .cells(fila, columna + 1)).MergeCells = True
      fila = fila + 1
      .cells(fila, columna) = "Fecha: "
      .cells(fila, columna).Font.Bold = True
      .cells(fila, columna).Font.Size = 13
      .cells(fila, columna + 1) = fechasistema
      .cells(fila, columna + 1).HorizontalAlignment = xlLeft
      fila = fila + 2
      columna = 1
      For Each fld In RS.Fields
         .cells(fila, columna) = fld.Name
         .cells(fila, columna).Font.Bold = True
         .cells(fila, columna).HorizontalAlignment = xlCenter 'Para que esta instruccion funcione, es necesario activar las referencias a Excel en Visual Basic
         columna = columna + 1
      Next
   
      ' después traspasamos el valor de los campos a las
      ' celdas de la hoja de excel
      fila = 6
      columna = 1
      While Not RS.EOF
         For Each fld In RS.Fields
            .cells(fila, columna) = Trim(fld.Value) 'se usa Trim para quitar los espacios adicionales provenientes de la tabla original
            columna = columna + 1
         Next
         columna = 1
         fila = fila + 1
         RS.MoveNext
      Wend
   columnasajustar = appExcel.ActiveWorkbook.ActiveSheet.Range("A6").End(xlDown).Row
   appExcel.ActiveWorkbook.ActiveSheet.Range("A6:Z" & columnasajustar).EntireColumn.AutoFit
   .Name = "Datos"
   DoCmd.Close acForm, "FrmGigAnimado"
   MsgBox "Reporte Procesado Exitosamente!!!", vbOKOnly, "Informacion!!!"
   End With

   RS.Close
   Set RS = Nothing
     
Set appExcel = Nothing

End Sub

Cualquier duda o aclaracion al respecto me cuentan. Saludos



-------------
"El espiritu de lucha es lo que nos impulsa cada día a emprender nuevos retos..."



Alexsc

Bogotá - Colombia


Publicado por: alexsc
Fecha de publicación: 26/Agosto/2014 a las 23:48
Buen dia:

Alguna respuesta de solucion a este error?? o alguna forma de controlarlo para que no interrumpa la ejecucion de la macro y no sea visible para el usuario???

Tengo una pregunta adicional. Resulta que en la consulta efectuada a la tabla de la BD de SQL Server estoy trayendo una columna que contiene tipo de dato fecha DATETIME(). En la clausula Select de dicha consulta SQL utilizo CONVERT(Varchar(10), fec_ing, 103), y esto me convierte el dato a formato de fecha dd/mm/yyyy.

Cuando genero la consulta en SQL Server directamente, por citar un ejemplo, me muestra la fecha de ingreso de un empleado como 01/07/2014, la cual es correcta, pero cuando este dato es trasladado a la hoja de Excel, se modifica de manera automatica y queda como 07/01/2014.

Como puedo mantener el formato de fecha en Excel tal como se genera en SQL Server??

Les agradezco mucho su pronta respuesta. Saludos



-------------
"El espiritu de lucha es lo que nos impulsa cada día a emprender nuevos retos..."



Alexsc

Bogotá - Colombia


Publicado por: alexsc
Fecha de publicación: 04/Septiembre/2014 a las 18:14
Buen dia Admin:

No obtuve respuesta de solucion al error que reporte, por lo que solicito sea cerrado este hilo

En cuanto a la ultima consulta acerca del manejo de las fecha extraidas de SQL a Excel, lo resolvi utilizando CONVERT(Varchar(10), fec_ing, 102), con lo cual la fecha en excel me queda como 2014.07.01

Muchas gracias por su colaboración. Saludos



-------------
"El espiritu de lucha es lo que nos impulsa cada día a emprender nuevos retos..."



Alexsc

Bogotá - Colombia


Publicado por: MexMan70
Fecha de publicación: 04/Septiembre/2014 a las 22:00
Hola alexsc, prueba comentar la siguiente linea y nos cuentas como te fue.

'DoCmd.OpenForm ("FrmGigAnimado"), acNormal


-------------
OneDrive: http://sdrv.ms/Vk6eJd


Publicado por: alexsc
Fecha de publicación: 05/Septiembre/2014 a las 00:53
Hola Mexman70

Ya lo probe y nada, el error sigue saliendo. Igual esa linea de codigo esta mucho despues de la linea en donde se genera el error

Muchas gracias por tu respuesta. Saludos



-------------
"El espiritu de lucha es lo que nos impulsa cada día a emprender nuevos retos..."



Alexsc

Bogotá - Colombia


Publicado por: alexsc
Fecha de publicación: 12/Septiembre/2014 a las 15:25
Buen dia Admin, por favor cerrar este hilo

El error se soluciono desinstalando e instalando nuevamente el paquete de office.

Muchas gracias. Saludos



-------------
"El espiritu de lucha es lo que nos impulsa cada día a emprender nuevos retos..."



Alexsc

Bogotá - Colombia



Imprimir página | Cerrar ventana