私は元々XMLからインポートされたアクセステーブルを持っています。私はそれをエクスポートするとき、私は元のXMLテーブルと同じXML構造を持っていません。VBAを使用したXMLへのアクセステーブルのエクスポート
<?xml version="1.0" standalone="true"?>
<profiling>
<program>
<name>118CDSpro</name>
<p1on>1</p1on>
<p1tool>36</p1tool>
<p2on>OFF</p2on>
<cut>OFF</cut>
<rule>OFF</rule>
<desc>118 Clad DirectSet Profile</desc>
<pic>akv.bmp</pic>
<ten>dilec_F</ten>
</program>
<profiling/>
これは私が輸出で得るものです::次のように
オリジナルのインポートテーブルには見え
<?xml version="1.0" encoding="UTF-8"?>
<dataroot generated="2016-06-27T12:16:29" xmlns:od="urn:schemas microsoft-com:officedata">
<Profiling>
<name>Din_C92S_pro2</name>
<p1on>1</p1on>
<p1tool>40</p1tool>
<p2on>OFF</p2on>
<cut>OFF</cut>
<rule>OFF</rule>
<desc>Inswing Door Sash Profile 2 (Storm)</desc>
<ten>dilec_F</ten>
</Profiling>
</dataroot>
が、私は問題は.xslファイル内にあると思いますが、私は新しいですどのように使用されているのかわかりません。
このコードは、元の形式に関して非常に具体的です。
ご意見をいただければ幸いです。
オプション2コード:
Sub ProfileXML2()
' RAW XML EXPORT
Application.ExportXML acExportTable, "Profiling", "C:\MyData\Crafter 0610\Crafter\MACHINE\SCHEMAS\ProfileExport.xml"
' TRANSFORM RAW XML (OPTION 2 - full XSLT processor)
Dim xmlDoc As Object, xslDoc As Object, newDoc As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xslDoc = CreateObject("MSXML2.DOMDocument")
Set newDoc = CreateObject("MSXML2.DOMDocument")
' LOAD XML AND XSL FILES
xmlDoc.Load "C:\MyData\Crafter 0610\Crafter\MACHINE\SCHEMAS\ProfileExport.xml"
xmlDoc.async = False
xslDoc.Load "C:\MyData\Crafter 0610\Crafter\MACHINE\SCHEMAS\ProfilingSchema.xsl"
xslDoc.async = False
' TRANSFORM SOURCE TO FINAL
xmlDoc.transformNodeToObject xslDoc, newDoc
newDoc.Save "C:\MyData\Crafter 0610\Crafter\DATA\ProfilingTest.xml"
Set newDoc = Nothing
Set xslDoc = Nothing
Set xmlDoc = Nothing
End Sub
私は両方をテストし、最初のオプションはインデントがないという事実を除いて、XMLデータテーブルに実際には影響しないと私は信じていました。 2番目のオプションでは、「XML文書にはトップレベルの要素が1つしかありません」というエラーが表示されました。最初のオプションがうまくいくので、自分の知識以外には本当に問題になりません。 –
素晴らしい!回答が助けになったら受け入れてください。 2番目のオプションは正しくインデントされます。私はそのエラーを再現することはできません。パスが正しいファイルを指していることを確認してください。 – Parfait
私はまだ回答とコメントの違いを調べようとしています。私はオプション2に関してオリジナルの質問に何かを追加しました。何かが正しくコード化されていないということです。 –