このコードでAccessから1つのテーブルのみをエクスポートできます。Accessから複数のテーブルを1つのXMLファイルにエクスポート
Option Compare Database
Function ExportXML()
'Init root xml
Dim objDom As DOMDocument
Set objDom = New DOMDocument
Dim objRootElem As IXMLDOMElement
Set objRootElem = objDom.createElement("root")
objDom.appendChild objRootElem
Dim objChartElem As IXMLDOMElement
Set objChartElem = objDom.createElement("charts")
objRootElem.appendChild objChartElem
'At this point we will have root->charts
'Get current database file
Dim db As Database
Set db = CurrentDb
'Construct query
Dim strSQL As String
strSQL = "select * from TestTable"
'Get result set
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset(strSQL)
'Create chartEntry in xml
Dim objSpecificChartElem As IXMLDOMElement
Set objSpecificChartElem = objDom.createElement("chart")
objChartElem.appendChild objSpecificChartElem
' Creates Attribute to the Member Element
Set objKeyRel = objDom.createAttribute("Key")
objKeyRel.nodeValue = "TestTable" 'Value corresponds to table name
objSpecificChartElem.setAttributeNode objKeyRel
'Looping through each row
Do While Not rs.EOF
'Current row
'Create entry in specific chart element
Dim objRowElem As IXMLDOMElement
Set objRowElem = objDom.createElement("col")
objSpecificChartElem.appendChild objRowElem
'We skip the ID column
For i = 1 To rs.Fields.Count - 1
'Each field
Dim objColElem As IXMLDOMElement
Set objColElem = objDom.createElement("string") 'Add logic to determine datatype
objRowElem.appendChild objColElem
'Extract value and add to element
Set objColValue = objDom.createAttribute("val")
objColValue.nodeValue = rs.Fields(i).Value
objColElem.setAttributeNode objColValue
Next i
'Next
rs.MoveNext
Loop
'Save
Dim path As String
path = CurrentDb.Name & ".export.xml"
objDom.Save (path)
'Show success
MsgBox "Succesfully exported at: " & path, vbDefaultButton1, "Export"
End Function
このコードのフォーマットは使用できますが、複数のテーブルを1つのXMLファイルにエクスポートするにはどうすればよいですか?
XML出力は次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<charts>
<chart key="testtable">
<col>
<string val="quarter"/>
<string val="Q1"/>
<string val="Q2"/>
<string val="Q3"/>
<string val="Q4"/>
</col>
<col>
<string val="Group 1"/>
<double val="100.1"/>
<double val="200.6"/>
<double val="250"/>
<double val="300.8"/>
</col>
<col>
<string val="Group 2"/>
<double val="250"/>
<double val="100.1"/>
<double val="300.8"/>
<double val="200.6"/>
</col>
<col>
<string val="growth"/>
<double val="22.5"/>
<double val="-5.1"/>
<double val="3.8"/>
<double val="50.6"/>
</col>
</chart>
<chart key="halfyear">
<col>
<string val="Period"/>
<string val="spring"/>
<string val="winter"/>
</col>
<col>
<string val="numbers"/>
<double val="50"/>
<double val="150"/>
</col>
<col>
<string val="price"/>
<double val="8.3"/>
<double val="1.2"/>
</col>
<col>
<string val="difference"/>
<double val="0"/>
<double val="-7"/>
</col>
</chart>
</charts>
</root>
これは、テーブルがどのように見えるべきかです:
このタグにもAccess-VBAを使用できますか?あなたはそれをパラメータ化できませんか? "TestTable"のインスタンスをパラメータとして渡す変数にしますか? –
は、 'テーブル名'を加えたUNIONクエリを使用できるサイズ(幅)が同じテーブルですか? –
いくつかのXMLデータを表示し、XML maintansのネストされたツリー構造としてどのように統合したいのかを説明する必要がありますか?テーブルはどこに挿入されるべきですか? – Parfait