2013-02-28 64 views
1

我需要創建一個宏(我以前從未做過),如果你們可以引導我走向正確的道路,那將會非常感激。創建用於將XML導出到特定文件夾的Excel宏

我在做什麼: 我已經創建了一個映射XML,我已經導入Excel。一旦將它導入到Excel中,用戶就會繼續粘貼一些數據並將其導出以接收XML數據文件,然後用戶可以將其放到FTP中,作業將其拾取並導入數據庫。

這裏的問題: 出口具有以下節點,這是我不想:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

相反,我想下面來替代它:

<?xml version="1.0" ?> 
<Root xmlns="http://tempuri.org/CourseImport.xsd"> 

如何自動執行此? Excel中是否有某種設置可以使其發生?

基本上,我想出口有我的根,而不是默認的根,我想自動能夠將文件拖放到指定路徑:例如:\研發\學校\當然進口

謝謝!

回答

1

我的同事實際上幫助我解決了這個問題。我以爲我應該分享我所做的

Sub ExportXML() 
' 
' Export XML Macro exports the data that is in Excel to XML. 
' 
Const ForReading = 1 
Const ForWriting = 2 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

' 
newFileName = Application.GetSaveAsFilename("out.xml", "XML Files (*.xml), *.xmls") 
If newFileName = False Then 
Exit Sub 
End If 
If objFSO.FileExists(newFileName) Then 
objFSO.DeleteFile (newFileName) 
End If 
ActiveWorkbook.XmlMaps("Root_Map").Export URL:=newFileName 


Set objFile = objFSO.OpenTextFile(newFileName, ForReading) 


Dim count 
count = 0 
Do Until objFile.AtEndOfStream 
strLine = objFile.ReadLine 
If count = 0 Then 
    strNewContents = strNewContents & "<?xml version=""1.0"" ?>" & vbCrLf 
ElseIf count = 1 Then 
    strNewContents = strNewContents & "<Root xmlns=""http://tempuri.org/import.xsd"">" & vbCrLf 
Else 
    strNewContents = strNewContents & strLine & vbCrLf 
End If 
count = count + 1 

Loop 

objFile.Close 

Set objFile = objFSO.OpenTextFile(newFileName, ForWriting) 
objFile.Write strNewContents 

objFile.Close 
End Sub 
相關問題