2012-03-04 47 views
6

¿Hay alguna manera de guardar una tabla de Excel como XML? Tengo el archivo de esquema XML ... y algunos datos en una tabla ... y tengo en Excel la opción Guardar como archivo XML, pero ¿puedo guardar un archivo como XML de VBA? Quiero automatizar un proceso y no encontré nada en esta opción. ¡Gracias!Guardar como XML con VBA?

+1

Algo como esto? http://stackoverflow.com/questions/2766760/how-to-generate-xml-from-an-excel-vba-macro –

+0

Ese fragmento de código convierte los datos de una tabla ... está bien y será el último solución, pero tengo el archivo de esquema XML ... y quiero hacer todo lo posible con las opciones que Excel ya tiene ... Intentaré grabar una macro para ver si hay algo útil. –

+0

entonces ... lo que quiero es un código VBA que cargue la scema xml ... hará lo que hace cuando lo arrastre/coloque sobre la tabla ... luego use Guardar como y guarde como XML –

Respuesta

5

grabador de macros el buen ol' me salvó esta vez :)) (¿Por qué no usado antes he publicado aquí) Entonces ... Para cargar un esquema XML tiene:?

ActiveWorkbook.XmlMaps.Add("Book2.xml", "raport").Name _ 
     = "raport_Map" 

Y para guardarlo como xml:

ActiveWorkbook.SaveAsXMLData Filename:="Book3.xml", _ 
     Map:=ActiveWorkbook.XmlMaps("raport_Map") 

Quién iba a pensar que es así de fácil?

+1

+1) Gr8 Job! Es realmente divertido cuando descubres algo por tu cuenta. ¿No es así?) –

+0

No conocía el mapeo xml antes de leer su respuesta y quiero agregar una información útil para aquellos en el mismo caso que yo: [Creando un Esquema de Mapeo XML en Excel 2010] (https : //msdn.microsoft.com/en-us/library/office/gg469857%28v=office.14%29.aspx? f = 255 & MSPPError = -2147217396) – DrHaze

0

Este enlace más me ayudó ->http://curiousmind.jlion.com/exceltotextfile

de secuencias de comandos en el enlace:

Sub MakeXML(iCaptionRow As Integer, iDataStartRow As Integer, sOutputFileName As String) 
    Dim Q As String 
    Q = Chr$(34) 

    Dim sXML As String 

    sXML = "<?xml version=" & Q & "1.0" & Q & " encoding=" & Q & "UTF-8" & Q & "?>" 
    sXML = sXML & "<rows>" 


    ''--determine count of columns 
    Dim iColCount As Integer 
    iColCount = 1 
    While Trim$(Cells(iCaptionRow, iColCount)) > "" 
     iColCount = iColCount + 1 
    Wend 

    Dim iRow As Integer 
    iRow = iDataStartRow 

    While Cells(iRow, 1) > "" 
     sXML = sXML & "<row id=" & Q & iRow & Q & ">" 

     For icol = 1 To iColCount - 1 
      sXML = sXML & "<" & Trim$(Cells(iCaptionRow, icol)) & ">" 
      sXML = sXML & Trim$(Cells(iRow, icol)) 
      sXML = sXML & "</" & Trim$(Cells(iCaptionRow, icol)) & ">" 
     Next 

     sXML = sXML & "</row>" 
     iRow = iRow + 1 
    Wend 
    sXML = sXML & "</rows>" 

    Dim nDestFile As Integer, sText As String 

    ''Close any open text files 
    Close 

    ''Get the number of the next free text file 
    nDestFile = FreeFile 

    ''Write the entire file to sText 
    Open sOutputFileName For Output As #nDestFile 
    Print #nDestFile, sXML 
    Close 
End Sub 

Sub test() 
    MakeXML 1, 2, "C:\Users\jlynds\output2.xml" 
End Sub 
+0

Desafortunadamente, el enlace original está desactivado. Pero puede acceder a una captura desde 2013 aquí: https://web.archive.org/web/20130502005831/http://curiousmind.jlion.com/exceltotextfile –

Cuestiones relacionadas