Exportar un subformulario a excel en vba Access

Tengo una tabla la cual tiene una consulta y de esa consulta tengo un subformulario.

Ese subformulario quiero exportarlo a excel, hasta allí todo bien logro exportarlo a excel y guardarlo con un nombre. El problema es que si en la siguiente ocasión quiero guardarlo con el mismo nombre, solo me dice que el file ya existe y me da solo la opción de sobrescribir el anterior o cancelar la operación.

Quisiera una otra opción la cual sea "guardar como"

Private Sub export_Click()
Dim rs As DAO.Recordset 
Dim xlApp As Object, xlWB As Object, xlSheet As Object 
Dim flp As DAO.Field, s As Integer
    Set rs = Me.Abfrage1_Unterformular.Form.RecordsetClone 
    Set xlApp = CreateObject("Excel.Application") 
    xlApp.Visible = True 
    Set xlWB = xlApp.Workbooks.Add
    Set xlSheet = xlWB.Sheets(1)
    s = 1
    For Each fld In rs.Fields
            xlSheet.Cells(1, s) = fld.Name
            s = s + 1
    Next fld
    xlSheet.Cells(2, 1).CopyFromRecordset rs 
    xlSheet.SaveAs filename:="C:\Users\denys\Desktop\eureka.xlsx"

End Sub

1 Respuesta

Respuesta
1

Supongo que tendrás alguna razón que yo no se ver para seguir ese proceso.

Yo haría la exportación por el Metodo directo de:

DoCmd. TransferSpreadsheet acExport, acSpreadsheetTypeExcel"x", Consulta, Fichero

Sustituye "x" por tu versión de Excel que según deduzco por la Extensión Será>> 12

Consulta >> Es tu Nombre de Consulta sin pasar por Subformulario

Y Fichero es el Nombre completo, con Ruta incluida.

Si no es así y quieres que no te salga mensaje, puedes borrar el fichero antes de guardar el siguiente de éste modo:

'Borra el Fichero antes de guardar el nuevo
Kill "C:\Users\denys\Desktop\eureka.xlsx"
ActiveWorkbook.SaveAs "C:\Users\denys\Desktop\eureka.xlsx"

Gracias por tu rápida respuesta Jacinto,

Si antes yo estaba filtrando de la consulta y por lo tanto podía utilizar el comando

DoCmd. TransferSpreadsheet, pero lo que pasa es que ahora estoy filtrando en el subformulario y deseo guardar ese subformulario como excel. Hasta la exportación no tengo problemas, pero no se que hacer cuando ya existe un archivo con el mismo nombre . El programa solo me avisa que ya existe uno y me da la opción de sobrescribirlo o cancelar. Pero yo quisiera que me de otra opción, como "guardar como" y poder darle otro nombre y guardarlo.

Espero que me puedas ayudar muchas gracias saludos.

Al pié de mi respuesta anterior te recomendaba:

... Si no es así y quieres que no te salga mensaje, puedes borrar el fichero antes de guardar el siguiente de éste modo:

'Borra el Fichero antes de guardar el nuevo
Kill "C:\Users\denys\Desktop\eureka.xlsx"
ActiveWorkbook.SaveAs "C:\Users\denys\Desktop\eureka.xlsx"

Esto para que no te diga que existe, porque se supone que lo sobreescribes.

Si quieres guardarlo con otro nombre, entiendo que no hay caso porque no encontrará el Nombre.

Has usado la Instrucción >> Kill  .............?

Si usandola sigues teniendo problemas me lo comentas.

Un saludo

Jacinto

Jacinto

Gracias Jacinto por tu respuesta

YA intente con Kill y bueno  con esta funcion elimina la anterior y coloca la nueva tabla con el mismo nombre que la anterior.

Lo que yo deseo es que me pregunte como en un Filedialog por un nuevo nombre como "Save as" y no elimine la anterior.

Disculpame por quizas no explicarme bien.

saludos

Daniel:

Ya que el código será un poco largo, si te parece te preparo un Ejemplo y en un par de días te facilito el enlace.

si claro gracias Jacinto

Te adjunto el enlace de la Página de Emilio Sancha, en la que viene un ejemplo más completo del que yo te iba a preparar.

http://www.mvp-access.es/emilio/Access/Descargas.asp 

El ejemplo es el Número 127 del 02/09.

Está basado en la BD Neptuno de Microsoft, que si no la tienes te la puedes descargar de la Página que te cito. Es el primer Item.

Lógicamente está basado en el Método >>CopyFromRecordset, que es el que tu usas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas