Error al Guardar Excel Desde Access con SAVEAS

Hola a todos los forero,
OS escribo porque me estoy bloqueando con la última rutina de un código que estoy generando y no entiendo por qué, tampoco es complicado.
Tengo un Access que genera una ficha excel y le exporta los datos, también inserta imágenes asociadas y les modifica el tamaño.
Al final se tiene que guardar en una carpeta según el código del registro y aplico desde access ActiveWorkbook.SaveAs Filename:=nombrearchivo, FileFormat:=xlNormal y me ocurre lo siguiente:
La primera vez que lo abro funciones perfectamente, la segunda vez después de la primera me da error 91 Variable de Objeto o Bloque With no establecido, si salgo del access y vuelvo a abrir el access funciona la primera vez pero no la segunda.
Por favor, si alguien me puede ayudar le estaré muy agradecido, no puedo poner la totalidad del código por los 3900 caracteres, pongo la parte que da el error
Gracias y saludos
Carlos
Private Sub Comando82_Click()
Dim rst As DAO.Recordset, _
    rstfotolink As DAO.Recordset, _
    strSQL, fotolinksql As String, _
    strLibro As String
    Dim lngFila As Integer
    Dim DbPath As String
    Dim pos_foto, pos_foto_fachada, pos_foto_contador, pos_foto_acometida, pos_foto_carto As Integer
    Dim CurrentProjectPath As String
    Dim fotto As Image
    Dim rutafoto As String
    Dim fotoname As String
    Dim lngFila_fachada, lngFila_contador, lngFila_acometida, lngFila_carto As Integer
    Dim nombrearchivo As String
    Dim nombrepcr As String
    Dim xls As Object ' Excel.Application
' abro una instancia de Excel
On Error GoTo Comando82_Click_TratamientoErrores
Set xls = CreateObject("Excel.Application") ' con ella abro el libro ExportaraExcel
DbPath = CurrentDb.Name
CurrentProjectPath = Left(DbPath, _
                         Len(DbPath) - Len(dir(DbPath)) - 1)
strLibro = CurrentProjectPath & "\croquis.xls"
xls.Workbooks.Open (strLibro)
' lo hago visible o no
xls.Visible = True ' o false
' activo la Hoja FICHA
xls.Worksheets("FICHA").Activate
If Not RecordsetVacioDAO(rst) Then
    xls.ActiveSheet.Range("P12").Select
   nombrearchivo = CurrentProjectPath & "\files\" & nombrepcr & "\" & nombrepcr & ".xls"
   End If
  CierraRecordsetDAO rst
lngFila_fachada = 1
pos_foto_fachada = 1
pos_foto_contador = 1
lngFila_contador = 1
lngFila_acometida = 1
pos_foto_acometida = 1
pos_foto_carto = 1
lngFila_carto = 1
Set rstfotolink = CurrentDb.OpenRecordset(fotolinksql, dbOpenDynaset)
If Not RecordsetVacioDAO(rstfotolink) Then
Do While Not rstfotolink.EOF
rstfotolink.MoveNext
lngFila = lngFila + 1
Loop
End If ' EL DE ABRIR EL RECORDSET
CierraRecordsetDAO rstfotolink
lngFila = 1
pos_foto = 1
ActiveWorkbook.SaveAs Filename:=nombrearchivo, FileFormat:=xlNormal
ActiveWorkbook.Close
Set xls = Nothing
Comando82_Click_Salir:
    On Error GoTo 0
    'Set xls = Nothing
    Exit Sub
Comando82_Click_TratamientoErrores:
MsgBox "Error " & Err.Number & " en proc. Comando82_Click de Documento VBA Form_frmExportaraExcel (" & Err.Description & ")", vbOKOnly + vbCritical
GoTo Comando82_Click_Salir
End Sub

1 respuesta

Respuesta
1
Pues si estas trabajando desde Access con un objeto Excel, por lógica debes seguir haciéndolo y no incluir instrucciones de VBA de EXcel en el "ide" del VBA de Access:
ActiveWorkbook.SaveAs Filename:=nombrearchivo, FileFormat:=xlNormal -- > No
xls.SaveAs Filename:=nombrearchivo, FileFormat:=xlNormal -- Si
No olvides que no es la única fila que hay que cambiar
Abraham
Muchas gracias experto.
Lo del ActiveWorkbook.SaveAs Filename:=nombrearchivo, FileFormat:=xlNormal ha sido una de las miles de pruebas que he hecho.
Ya os decía que la aplicación generaba el primer excel perfectamente pero el segundo al llegar al saveas tanto como xls (excel.application) como con el ActiveWorkbook daba el error, yo creo que debe ser que la aplicación cerraba el excel pero se quedaba guardado en memoría es decir el set xls = nothing no se lo cargaba como dios manfa ya que si salgo del access y lo vuelvo a arrancar funcionaba perfectamente la primera vez, la segunda ya no.
En definitiva, al final he hecho xls.ActiveWorkbook.SaveAs nombrearchivo nada más abrir el libro en xls.Workbooks.Open (strLibro) y un xls. Sabe donde tenía el saveas anteriormente y ahora si que me funciona perfectamente
¿Y qué cambia?, pues sinceramente no lo entiendo... pero bueno "el fin justifica los medios".
Muchas gracias por tu colaboración Abraham
Carlos
Pues de nada. Te pido cerrar el debate.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas