设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel2013教程] Excel中编写VBA程序加载XML文件的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2017-1-16 17:27:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
                               

                        在Excel中,通过使用VBA程序,可以方便地实现XML文件的添加。实际上,通过VBA代码向工作表导入XML文档数据需要完成如下3个步骤:首先使用XmlMap对象建立架构到电子表格的映射,然后建立到电子表格的映射区域,最后将XML文档中的数据导入到电子表格中即可。本文提供了编写VBA程序加载XML文件的操作方法。
        1、新建Excel文件,打开Visual Basic编辑器。选择菜单栏中的“插入”|“模块”命令创建一个新模块,双击该模块打开其“代码”窗口,在其中输入程序代码,如图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("学号","姓名","性别","出生年月",_
        "身份证号","籍贯","电话","地址") '架构元素名
        Set xMap=ThisWorkbook.XmlMaps("学生信息架构映射") '获取架构映射
        If xMap Is Nothing Then '如果架构映射不存在则创建
        Set xMap=ThisWorkbook.XmlMaps.Add(ThisWorkbook.Path&_"\学生信息.xsd") '创建到学生信息的架构映射
        xMap.Name="学生信息架构映射" '设置架构映射的名称
        End If
        Set objList=Sheet1.ListObjects.Add '在Sheet1表中添加列表
        For i=1 To UBound(arrPath)
        objList.ListColumns.Add '为列表添加列
        Next
        For i=0 To UBound(arrPath) '设置列表的各个列
        objList.ListColumns(i+1).Name=arrPath(i) '设置列表第i+1列的列标题
        objList.ListColumns(i+1).XPath.SetValue xMap,_"/学生明细/学生信息/"&arrPath(i) '建立第i+1列的区域映射
        Next
        xMap.Import ThisWorkbook.Path&"\学生信息.xml" '导入XML数据文档
        End Sub
       

        图1 添加模块并输入程序代码

        2、切换到Excel,选择A1单元格,返回Visual Basic编辑器中,将插入点光标放置到上一步创建的程序中,按F5键运行程序,在Excel工作表中可以查看到程序代码运行的结果,如图2所示。
       

        图2 程序运行的结果

        提示
        从上面的结果中可以看出,Excel文件中已经加载了映射的名称和元素,并且将这些元素都填充到Excel的列表中。
        3、添加导入数据的代码。在程序代码的最后添加如下代码:
        xMap.Import ThisWorkbook.Path&“\学生信息.xml” '导入XML数据文档
        返回到VBA中,查看程序代码运行结果,如图3所示。
       

        图3 运行结果

        注意
        通过录制宏并不能获取导入XML文档数据的全部代码,其中指定映射区域的步骤将不会获取任何宏代码。因而读者在使用该方法时,需要自己手动完成这些代码的设置工作。
               
                               
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-7 02:02 , Processed in 0.172885 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表