2017-03-14 2 views
0

私がやっていることはおそらくボギーの仕事であり、私が考えていないより技術的にきれいな方法があるかもしれないと認めます。VBAを使用したXMLへのエクスポート - ヘッダー破損

私は野蛮な方法でXML構造を作成するExcelシートを持っています。

基本的には列Aを下って行く細胞は(テキストとして)は次のとおりです。

<?xml version="1.0" encoding="UTF-8" ?> 
<ReportingInfo Version="1.0" CreationDate="2017-03-14T11:02:49"> 
<RecordInfo> 
<FilingType>INIT</FilingType> 
</RecordInfo> 

私は、XMLファイルとしてシートをエクスポートするVBAコードのビットを持っている:

Public Sub ExportToXML2() 

Dim wbkExport As Workbook 
Dim shtToExport As Worksheet 
Dim i As String 
i = Date 
i = Replace(i, "/", "") 

Set shtToExport = ThisWorkbook.Worksheets("Output")  'Sheet to export as XML 
Set wbkExport = Application.Workbooks.Add 
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count) Application.DisplayAlerts = False 
wbkExport.SaveAs Filename:="C:\Projects\XML_Report_" & i & ".xml", FileFormat:=xlCSV 
Application.DisplayAlerts = True 

wbkExport.Close SaveChanges:=False 


Workbooks.Open "C:\Projects\XML_Report_" & i & ".xml" 

End Sub 

作成します

"<?xml version=""1.0"" encoding=""UTF-8"" ?>" 
"<ReportingInfo State=""GB"" Version=""1.0"" CreationDate=""2017-03-14T11:02:49"">" 
<RecordInfo> 
<FilingType>INIT</FilingType> 
</RecordInfo> 

余分な引用符が表示されているアイデアはありますか?

多くのありがとうございます。

+0

おそらくFileFormat:= xlXMLSpreadsheetはその仕事をしますか? – Luuklag

+0

残念ながら、トリガーはXMLを挿入するのに優れています。本当に私がこれを扱うことに優れているのは、xxtをファイル拡張子として保存するXMLマークアップでフォーマットされたtxtファイルです。それが動作する場合... – clarkejoe

+0

あなたのセルはどのようにあなたのブックに書式設定されます。おそらく問題は、テキストとして書式設定されているため、値をテキストとして認識するために、エクスポートで引用符を取得することです。 – Luuklag

答えて

0

CSVまたはテキストとして保存すると、Excelはテキストを解析し、引用符を含むものを引用符で囲みます。これがあなたの問題です。これを避けるには、ここでのようにテキストストリーム(好ましくはユニコード)として保存してXMLを作成します。出力で

データ、A1:A6:

<?xml version="1.0" encoding="UTF-8" ?> 
<ReportingInfo Version="1.0" CreationDate="2017-03-14T11:02:49"> 
<RecordInfo> 
<FilingType>INIT</FilingType> 
</RecordInfo> 
</ReportingInfo> 

コード:

Public Sub ExportToXML2() 
    Dim fso As Object, txt As Object 
    Dim lines As Long 
    Dim i As String 

    i = Date 
    i = Replace(i, "/", "") 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set txt = fso.CreateTextFile("C:\Projects\XML_Report_" & i & ".xml", True) 
    With ThisWorkbook.Worksheets("Output") 'Sheet to export as XML 
     For lines = 1 To .UsedRange.Rows.Count 
      txt.WriteLine (.Cells(lines, 1)) 
     Next 
    End With 
    txt.Close 
    Workbooks.Open "C:\Projects\XML_Report_" & i & ".xml" 
End Sub 

結果:Excelで

<?xml version="1.0" encoding="UTF-8" ?> 
<ReportingInfo Version="1.0" CreationDate="2017-03-14T11:02:49"> 
<RecordInfo> 
<FilingType>INIT</FilingType> 
</RecordInfo> 
</ReportingInfo> 

オープンXML:

/ReportingInfo  
/@CreationDate /@Version /RecordInfo/FilingType 
14/03/17 11:02 1 INIT 
+0

あなたはチャンピオンです!私はそれを問題としたが、それを防ぐ方法は知らなかった。 – clarkejoe

関連する問題