2012-03-04 42 views
6

Có cách nào để lưu bảng Excel dưới dạng XML không? Tôi có tệp XML Schema ... và một số dữ liệu trong một bảng ... và tôi có trong Excel tùy chọn Lưu dưới dạng tệp XML nhưng tôi có thể lưu một tệp dưới dạng XML từ VBA không? Tôi muốn tự động hóa một quá trình và tôi không tìm thấy gì trên tùy chọn này. Cảm ơn!Lưu dưới dạng XML với VBA?

+1

Something như thế này? http://stackoverflow.com/questions/2766760/how-to-generate-xml-from-an-excel-vba-macro –

+0

Đoạn mã đó chuyển đổi dữ liệu từ một bảng ... nó ổn và sẽ là cuối cùng giải pháp nhưng tôi có tệp lược đồ XML ..và tôi muốn làm mọi thứ với các tùy chọn mà Excel đã có ... Tôi sẽ cố gắng ghi lại một macro để xem có điều gì đó hữu ích hay không. –

+0

vì vậy ... những gì tôi muốn là một mã VBA sẽ tải các dấu vết xml ... sẽ làm những gì nó làm khi tôi kéo/thả nó trên bàn ... hơn sử dụng Lưu như và lưu nó dưới dạng XML –

Trả lời

5

macro recorder ol tốt' đã cứu tôi lần này :)) (Tại sao tôi không sử dụng nó trước khi tôi được đăng ở đây) Vậy ... Để tải một schema xml bạn có:?

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

Và để lưu nó dưới dạng xml:

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

Ai có thể nghĩ rằng đó là dễ dàng?

+1

+1) Gr8 Job! Nó thực sự thú vị khi bạn khám phá một cái gì đó của riêng bạn. Không phải là nó;) –

+0

Tôi không biết sơ đồ xml trước khi đọc câu trả lời của bạn và tôi muốn thêm một thông tin hữu ích cho những người trong cùng trường hợp với tôi: [Tạo lược đồ ánh xạ XML trong Excel 2010] (https : //msdn.microsoft.com/en-us/library/office/gg469857%28v=office.14%29.aspx? f = 255 & MSPPError = -2147217396) – DrHaze

0

Liên kết này đã giúp tôi nhiều nhất ->http://curiousmind.jlion.com/exceltotextfile

Script vào liên kết:

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

Thật không may, liên kết gốc bị hỏng. Nhưng bạn có thể truy cập một lần chụp từ năm 2013 tại đây: https://web.archive.org/web/20130502005831/http://curiousmind.jlion.com/exceltotextfile –

Các vấn đề liên quan