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
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 de Abraham Valencia
1