位置:首頁 > 軟件操作教程 > 辦公軟件 > Excel > 問題詳情

如何在Excel中編寫VBA程序加載XML文件?

提問人:周麗平發(fā)布時間:2021-08-23

1、新建Excel文件,打開Visual Basic編輯器。選擇菜單欄中的“插入”|“模塊”命令創(chuàng)建一個新模塊,雙擊該模塊打開其“代碼”窗口,在其中輸入程序代碼,如圖1所示。具體的程序代碼如下所示:

Sub CreateXMLList()

Dim xMap As XmlMap

Dim objList As ListObject

Dim arrPath As Variant

Dim mPath As XPath

Dim i As Integer

On Error Resume Next

arrPath=Array("學(xué)號","姓名","性別","出生年月",_

"身份證號","籍貫","電話","地址") '架構(gòu)元素名

Set xMap=ThisWorkbook.XmlMaps("學(xué)生信息架構(gòu)映射") '獲取架構(gòu)映射

If xMap Is Nothing Then '如果架構(gòu)映射不存在則創(chuàng)建

Set xMap=ThisWorkbook.XmlMaps.Add(ThisWorkbook.Path&_"\學(xué)生信息.xsd") '創(chuàng)建到學(xué)生信息的架構(gòu)映射

xMap.Name="學(xué)生信息架構(gòu)映射" '設(shè)置架構(gòu)映射的名稱

End If

Set objList=Sheet1.ListObjects.Add '在Sheet1表中添加列表

For i=1 To UBound(arrPath)

objList.ListColumns.Add '為列表添加列

Next

For i=0 To UBound(arrPath) '設(shè)置列表的各個列

objList.ListColumns(i+1).Name=arrPath(i) '設(shè)置列表第i+1列的列標(biāo)題

objList.ListColumns(i+1).XPath.SetValue xMap,_"/學(xué)生明細(xì)/學(xué)生信息/"&arrPath(i) '建立第i+1列的區(qū)域映射

Next

xMap.Import ThisWorkbook.Path&"\學(xué)生信息.xml" '導(dǎo)入XML數(shù)據(jù)文檔

End Sub

image.png

圖1 添加模塊并輸入程序代碼

2、切換到Excel,選擇A1單元格,返回Visual Basic編輯器中,將插入點(diǎn)光標(biāo)放置到上一步創(chuàng)建的程序中,按F5鍵運(yùn)行程序,在Excel工作表中可以查看到程序代碼運(yùn)行的結(jié)果,如圖2所示。

image.png

圖2 程序運(yùn)行的結(jié)果

提示

從上面的結(jié)果中可以看出,Excel文件中已經(jīng)加載了映射的名稱和元素,并且將這些元素都填充到Excel的列表中。

3、添加導(dǎo)入數(shù)據(jù)的代碼。在程序代碼的最后添加如下代碼:

xMap.Import ThisWorkbook.Path&“\學(xué)生信息.xml” '導(dǎo)入XML數(shù)據(jù)文檔

返回到VBA中,查看程序代碼運(yùn)行結(jié)果,如圖3所示。

image.png

圖3 運(yùn)行結(jié)果

注意

通過錄制宏并不能獲取導(dǎo)入XML文檔數(shù)據(jù)的全部代碼,其中指定映射區(qū)域的步驟將不會獲取任何宏代碼。因而讀者在使用該方法時,需要自己手動完成這些代碼的設(shè)置工作。

繼續(xù)查找其他問題的答案?

回復(fù)(0)
返回頂部