Imprimir página | Cerrar ventana

Incrustar-vincular archivo XSD en XML al exportar

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84822
Fecha de impresión: 27/Marzo/2026 a las 02:09


Tema: Incrustar-vincular archivo XSD en XML al exportar
Publicado por: Amex
Asunto: Incrustar-vincular archivo XSD en XML al exportar
Fecha de publicación: 14/Noviembre/2019 a las 08:38
Buenos días. Necesito ayuda sobre como incrustar o vincular un archivo XSD dentro del archivo XML al realizar la exportación de un objeto (en mi caso una consulta).

Esta tarea es sencilla si se realiza la exportación desde el entorno de access, es decir, en el objeto en cuestión dando botón derecho y exportar. De esta manera aparece un cuadro de diálogo donde en primer lugar se elije la información que se va a exportar (Datos (XML) y Esquema de los datos (XSD)), pulsando en "Más opciones" se abre otro cuadro, donde en la pestaña "Esquema" existe la opción "Incrustar esquema en documento de datos XML exportado". Al realizar esto, en vez de generarse dos archivos de exportación (el XML y el XSD), tan solo se genera un XML donde ya está contenida la información del XSD. 

En mi caso, la exportación del objeto la realizo mediante código VBA. Por tanto, me gustaría incrustar el archivo XSD en el XML desde el código. ¿Alguien sabe como hacerlo?

El código con el que realizo la exportación es el siguiente. 

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, "Consulta1", var1, var2

            Next varsel

End If
End With


Un saludo y muchas gracias. 



Respuestas:
Publicado por: javier.mil
Fecha de publicación: 14/Noviembre/2019 a las 10:22
Buenas

Prueba con algo parecido a esto

Application.ExportXML ObjectType:=acExportQuery, DataSource:="MiConsulta", DataTarget:=Application.CurrentProject.Path & "MiFicheroXML", OtherFlags:=acEmbedSchema + acExportAllTableAndFieldProperties

Aviso No lo he probado con consultas ya que acExportAllTableAndFieldProperties esta "pensado" para tablas , pero quizás te funcione para tus consultas......

Si utilizas tablas entonces deberías cambiar:
acExportQuery  por  acExportTable

 



-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: emiliove
Fecha de publicación: 14/Noviembre/2019 a las 15:44
Otra forma, si siempre es el mismo archivo a exportar puedes usar el asistente y guardar pasos de la exportación la primera vez. Una vez guardado mediante VBA puedes repetir la exportación con algo tan sencillo como:

DoCmd.RunSavedImportExport (“NombreGuardado”)

Saludos.


Publicado por: Maverick2019
Fecha de publicación: 15/Noviembre/2019 a las 12:31
Hola
Mira a ver sí esto te puede ayudar:  https://docs.microsoft.com/es-es/office/vba/api/access.application.exportxml" rel="nofollow - https://docs.microsoft.com/es-es/office/vba/api/access.application.exportxml

Salu2,


Publicado por: Amex
Fecha de publicación: 18/Noviembre/2019 a las 17:16
Buenas tardes. He probado con los métodos que habéis propuesto y funciona de manera correcta. 

Dejo por aquí el código por si a alguien le puede ayudar. 

Muchas gracias por la ayuda. Un saludo!!!
    
    Dim fd As Object
    Dim varsel As Variant
    
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    
    With fd
        .Title = "Exportar Incidencias a archivo XML"
        .AllowMultiSelect = False
        .InitialFileName = varfecha & vartitulo & vartitulodesde & vartitulohasta
        
        If .Show = True Then

            For Each varsel In .SelectedItems
                var1 = varsel & ".xml"
                
                DoCmd.OpenQuery "TIncidenciasExportadas"
                Application.ExportXML acExportQuery, "TIncidenciasExportadas", var1, , , , , acEmbedSchema + acExportAllTableAndFieldProperties
                
            Next varsel
        
        End If
    End With




Imprimir página | Cerrar ventana