** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Abrir cuadro de diálogo al exportar objeto con vba
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAbrir cuadro de diálogo al exportar objeto con vba

 Responder Responder
Autor
Mensaje
Amex Ver desplegable
Nuevo
Nuevo


Unido: 06/Noviembre/2019
Localización: León
Estado: Sin conexión
Puntos: 16
Enlace directo a este mensaje Tema: Abrir cuadro de diálogo al exportar objeto con vba
    Enviado: 12/Noviembre/2019 a las 08:45
Buenos días. 

Necesito ayuda sobre como hacer que se abra el típico cuadro de diálogo de office para seleccionar el destino donde exportar/importar un objeto. Me explico: 

Actualmente con el evento hacer click de un botón exporto e importo una consulta mediante el siguiente código: 

Application.ExportXML acExportQuery, "Consulta", "C:\Users\...\...\Exportados\Consulta.xml", "C:\Users\...\...\Exportados\Consulta.xsd"

Application.ImportXML "C:\Users\...\...\Exportados\Consulta.xml", acStructureAndData

Me gustaría hacer la misma acción, pero que al pulsar en el botón se abra el cuadro de diálogo para seleccionar la carpeta de destino. ¿Sabéis como hacerlo?

Un saludo y muchas gracias. 

Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 12/Noviembre/2019 a las 11:45
Para abrir un cuadro de selección de carpeta puedes utilizar esta función:

Function fntSeleccionaCarpeta(Optional strTitulo As String = "", Optional strInitialFolder As String = "") As String

    ' Función que selecciona una carpeta y devuelve el Path entero
    
    Dim varFile             As Variant
    Dim fDialog             As Object
    Const msoFileDialogFolderPicker = 4

    ' Seleccionamos el fichero
    Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)

    With fDialog
        .AllowMultiSelect = False
        If strTitulo <> "" Then
            .Title = strTitulo
        Else
            .Title = "Seleccionar carpeta"
        End If
        .InitialFileName = strInitialFolder
        If .Show = True Then
            For Each varFile In .SelectedItems
                fntSeleccionaCarpeta = varFile
            Next
        Else
            ' el usuario ha cancelado la selección del fichero
            fntSeleccionaCarpeta = ""
            Exit Function
        End If
    End With

End Function
Xavi, un minyó de Terrassa

Mi web
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Enlace directo a este mensaje Enviado: 12/Noviembre/2019 a las 17:21
Otra opcion mas es atacar el cuadro de dialogo directamernte

Const cMiConsulta As String = "qryMiConsulta"
Const cMiFicheroXML As String = "XMLOutput.xml"

DoCmd.OutputTo acExportQuery, cMiConsulta, "XML", Application.CurrentProject.Path & cMiFicheroXML


Cuando se abre la ventana de dialogo entra en la pestaña de Schema y podrás seleccionar donde depositar el fichero de Exportación

 
Arriba
Amex Ver desplegable
Nuevo
Nuevo


Unido: 06/Noviembre/2019
Localización: León
Estado: Sin conexión
Puntos: 16
Enlace directo a este mensaje Enviado: 13/Noviembre/2019 a las 15:46
Muchas gracias. He probado de las dos formas y ambas podrían servir.

Dejo por aquí el código de como lo tengo por si a alguien le pudiese servir. 


Dim fd As Object
Dim varsel As Variant
    
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    
With fd
        .Title = "Exportar a archivo XML"
        .AllowMultiSelect = False
        .InitialFileName = "Prueba"
        
If .Show = True Then
        
            For Each varsel In .SelectedItems
                var1 = varsel & ".xml"
                var2 = varsel & ".xsd"
                
                Application.ExportXML acExportQuery, "CTIncidenciasTragsa", var1, var2

            Next varsel

End If
End With


De esta manera se abre el cuadro de diálogo típico de windows y selecciono el destino donde guardar el archivo. Se crean el archivo XML y el archivo de estructura XSD.

Mediante la manera propuesta por javier.mil, se abre el mismo cuadro de diálogo que cuando se exporta directamente desde el entorno de Access. 
En este cuadro hay una opción muy interesante que me gustaría utilizar. En la pestaña Schema aparece la opción de incrustar el XSD dentro del XML, de manera que solo se dispondría de un archivo.xml. 

¿Alguien sabe como realizar esto en el código VBA, es decir, incrustar el archivo XSD en el XML de forma que solo sea necesario generar un archivo? 




Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 13/Noviembre/2019 a las 19:07
Hola,

Vaya por delante que no me se la respuesta a tu última pregunta pero te agradeceríamos que, para mantener el orden en el foro, abrieras un nuevo hilo con esa duda.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable