2012-03-04 49 views
6

有沒有辦法將Excel表格保存爲XML?我有XML Schema文件...和表格中的一些數據......並且我在Excel中有另存爲XML文件選項,但是我可以將文件從VBA保存爲XML嗎?我想自動化一個流程,但我沒有找到這個選項。謝謝!保存爲XML與VBA?

+1

像這樣的事情? http://stackoverflow.com/questions/2766760/how-to-generate-xml-from-an-excel-vba-macro – 2012-03-04 19:23:23

+0

那段代碼轉換表中的數據......這是好的,將是最終的解決方案,但我有XML模式文件..我想用Excel已有的選項來做所有事情...我會嘗試記錄宏以查看是否有一些有用的東西。 – 2012-03-04 19:27:38

+0

所以...我想要的是一個VBA代碼,將加載xml scema ...將它做的事情,當我拖/放在桌子上...比使用另存爲並將其另存爲XML – 2012-03-04 19:28:46

回答

5

好ol宏錄製救了我這段時間:))(我爲什麼沒有使用它之前,我張貼在這裏) 所以... 加載您有一個XML架構:

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

並將其保存爲XML:

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

誰曾想到,就這麼簡單?

+1

+1)Gr8 Job!當你自己發現某些東西的時候真的很有趣。是不是;) – 2012-03-04 19:59:27

+0

在閱讀您的答案之前,我並沒有意識到xml映射,並且想爲這些與我相同的案例添加一條有用的信息:[在Excel 2010中創建XML映射架構](https ://msdn.microsoft.com/en-us/library/office/gg469857%28v=office.14%29.aspx?f = 255&MSPPError = -2147217396) – DrHaze 2016-01-15 13:29:53

0

此鏈接幫助我最 - >http://curiousmind.jlion.com/exceltotextfile

腳本的鏈接:

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

不幸的是,原始鏈接已關閉。但是你可以在這裏訪問2013年的捕獲:https://web.archive.org/web/20130502005831/http://curiousmind.jlion.com/exceltotextfile – 2016-08-10 08:40:29