VBA高级应用30例 应用6 第5部分:5   利用VBA从XML文件中导出数值数据

发布时间:2026/7/19 9:24:23

VBA高级应用30例 应用6 第5部分:5    利用VBA从XML文件中导出数值数据
《VBA高级应用30例》版权10178985是我推出的第十套教程教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开这套教程案例与理论结合紧贴“实战”并做“战术总结”以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序写好的程序可以升级。本套教程共三册三十个专题本讲的内容是VBA高级应用30例应用6 第5部分5 利用VBA从XML文件中导出数值数据【分享成果随喜正能量】我们能在生时多做善事则临死何惧我们能在平日贡献社会则虽死犹生。每一个在你的生命里出现的人都有原因喜欢你的人给了你温暖和勇气你喜欢的人让你学会了爱和自持你不喜欢的人教会你宽容与尊重不喜欢你的人让你自省与成长。应用6 第5部分5 利用VBA从XML文件中导出数值数据这部分开始我们深入讲解这个应用如何利用VBA操作XML文件我给大家介绍的有三部分内容一是如何导出数值数据二是如何修改工具栏三是如何导出工作表中的图片。可以说这部分内容值得深入研究的还很多我给大家展示的只是很少的一部分而已希望有兴趣的朋友能深入地研究。我们先来研究如何导出数值数据。如之前讲解的手工修正XML文件的方法利用VBA处理XML文件也同样需要以下几个步骤a解压缩.xlsx或.xlsm文件b) 提取适当的XML文件c将XML文件写回文件夹结构d把文件还原这里我将利用一个类模块来完成主要的工作同时为了处理XML文件我们还要做如下的引用本专题提供的实例应用程序如下本专题利用到的文件高级应用06文件夹-2高级应用06-2.xlsm示例1.xlsm示例1和示例2的备份(文件夹用于原始文件的恢复)目的在上述的“示例1.xlsm”文件中有名称为“mySheet”的工作表这个工作表中有很多的数据我们要把这些数据导出到程序文件“高级应用06-2.xlsm”的“sheet1”工作表中。一般情况下这种操作是复制粘贴如果应用VBA对工作表的操作方法是多种多样的在我之前的教程中有讲解本专题的内容是利用VBA对XML文件进行操作获得导出的数据这里我们只给大家数值数据的导出代码操作的是工作表的xml文档对于其他的操作没有展开大家可以自己研究利用styles.xml文档。为了实现我们的目的我们按下面的步骤1) 解压.xlsx或.xlsm文件类模块Public Sub UnzipFile()Dim FSO As ObjectDim oShellApp As ObjectSet FSO CreateObject(scripting.filesystemobject)从源文件的位置派生要解压缩到的文件夹,FolderName(类属性)XMLFolderRoot FolderName在与sourcefile相同的文件夹中创建一个专用解压缩文件夹On Error Resume Next删除所有以前存在的文件夹FSO.deletefolder XMLFolderRoot *, TrueKill XMLFolderRoot *.*On Error GoTo 0创建普通文件夹If FolderExists(XMLFolderRoot) False ThenMkDir XMLFolderRootEnd IfXLFolder XMLFolderRoot xl\Set oShellApp CreateObject(Shell.Application)将文件复制到新创建的文件夹中oShellApp.Namespace(XMLFolderRoot).CopyHere oShellApp.Namespace(SourceFile).itemsOn Error Resume Next清理临时文件夹FSO.deletefolder Environ(Temp) \Temporary Directory*, TrueSet oShellApp NothingSet FSO NothingExit SubEnd Sub代码截图2获取属于特定工作表的xml文件信息类模块使用OpenXML包时最基本的操作之一是操作文件中工作表的XML文档。当然我们希望根据一定的信息从包中提取正确的XML工作表的名称。下面显示的代码提取适当的rId关系标识符属性值该属性值列在该文件的“工作表”节点中的文件workbook.xml中。这个操作我将利用两段代码来完成首先在workbook.xml文件中获得指定工作表的r:id值例如本专题给的例子是从工作表“mySheet”中导出数据那么首先要获得该工作表的rid为rid3然后找出哪个xml文件属于该Id,程序中获得的文件名称是worksheets/sheet3.xml.(当然第二个步骤也可以使用另一种方法获取属于特定rid的xml文件,这个方法在我提供的程序文件中有Function GetSheetNameFromId)。我们看下面的两段代码Private Function GetSheetIdFromSheetName(sSheetName) As String得到ridDim oXMLDoc As MSXML2.DOMDocumentDim oXMLNode As MSXML2.IXMLDOMNodeDim oXMLNodeList As MSXML2.IXMLDOMNodeListIf mvXLFolder And Sheet2Change ThenSet oXMLDoc New MSXML2.DOMDocumentoXMLDoc.Load XLFolder workbook.xmlSet oXMLNodeList oXMLDoc.SelectNodes(/workbook/sheets/sheet)For Each oXMLNode In oXMLNodeListIf oXMLNode.Attributes.getNamedItem(name).NodeValue sSheetName ThenGetSheetIdFromSheetName oXMLNode.Attributes.getNamedItem(r:id).NodeValueExit FunctionEnd IfNextEnd IfEnd FunctionEnd IfEnd Function代码的截图代码的讲解在本例子中上述第一段代码得到的返回值是rid3第二段代码得到的返回值是worksheets/sheet3.xml。3提取XML文件标准模块下面的过程从解压缩的文件夹中提取xml文件Public Function GetXMLFromFile(sFileName As String) As StringDim oXMLDoc As MSXML2.DOMDocumentIf Len(XLFolder) 0 ThenGetXMLFromFile ElseSet oXMLDoc New MSXML2.DOMDocumentoXMLDoc.Load XLFolder sFileNameGetXMLFromFile oXMLDoc.XMLSet oXMLDoc NothingEnd IfEnd Function代码的截图4将XML文件中的信息导出到指定文件中类模块下面的函数是将XML文件中的信息导出到程序文件中的Sheet1工作表中Function WriteXML2Sheet(sXML As String)填入处理的工作表是sheet1Dim oNode As MSXML2.IXMLDOMNode代码的截图5文件的还原类模块下面的代码将压缩文件还原成原始压缩文件。Public Sub ZipAllFilesInFolder()Dim oShellApp As ObjectDim sDate As StringDim sDefPath As StringDim vFileNameZip As VariantDim FSO As ObjectDim lFileCt As Long代码的部分截图我20多年的VBA实践经验全部浓缩在下面的各个教程中

相关新闻

2026绵阳黄金回收白银回收铂金回收工商备案可查全城上门回收旧金老店联系方式推荐

2026绵阳黄金回收白银回收铂金回收工商备案可查全城上门回收旧金老店联系方式推荐

2026/7/19 9:14:23

2026绵阳黄金白银铂金回收实测榜单|工商备案可查全城上门回收旧金老店联系方式推荐 Meta快照标题:绵阳黄金回收哪家靠谱|工商公安双备案中检认证实体门店 绵阳本地贵金属回收店铺遍地丛生,行业套路层出不穷,不少市民变…

近期AI热点003|Kimi K3 技术拆解:2.8 万亿参数、API 接入与真实评价

近期AI热点003|Kimi K3 技术拆解:2.8 万亿参数、API 接入与真实评价

2026/7/19 9:14:23

近期AI热点003|Kimi K3 技术拆解:2.8 万亿参数、API 接入与真实评价主要信息源:Kimi 官方技术博客与 API 文档、MoonshotAI GitHub、Artificial Analysis、Hacker News、爱范儿实测 关键词:Kimi K3、Moonshot AI、开源大模型、MoE…

GEO服务质量诊断系统的架构设计:从品牌可见性到引用可信度的全链路检测

GEO服务质量诊断系统的架构设计:从品牌可见性到引用可信度的全链路检测

2026/7/19 9:14:23

一、问题背景:GEO服务交付的质量验证缺口 GEO服务交付中存在一个普遍矛盾:服务商认为数据已经改善,客户却认为"没有效果"。这一矛盾的根源不在于服务本身是否有效,而在于交付体系中缺少一套可验证、可追溯、客户可自行…

Claude 4新特性未公开文档泄露(内部测试版实测报告):多模态推理延迟下降64%,但存在3个兼容性陷阱

Claude 4新特性未公开文档泄露(内部测试版实测报告):多模态推理延迟下降64%,但存在3个兼容性陷阱

2026/7/19 14:54:38

更多请点击: https://codechina.net 第一章:Claude 4多模态推理性能跃迁与风险认知 Claude 4标志着Anthropic在多模态基础模型上的重大突破,其核心能力已从纯文本扩展至跨模态联合理解——支持图像、图表、手写公式、结构化表格及嵌入式代码…

力扣-高频 SQL 50 题(基础版)-1484. 按日期分组销售产品

力扣-高频 SQL 50 题(基础版)-1484. 按日期分组销售产品

2026/7/19 14:54:38

一、完整建表 SQL(MySQL 语法):CREATE TABLE Activities (sell_date DATE,product VARCHAR(30) );该表没有主键(具有唯一值的列)。它可能包含重复项。 此表的每一行都包含产品名称和在市场上销售的日期。INSERT INTO Activities(sell_date, p…

如何在5分钟内构建企业级3D点云标注系统:从技术选型到生产部署

如何在5分钟内构建企业级3D点云标注系统:从技术选型到生产部署

2026/7/19 14:54:38

如何在5分钟内构建企业级3D点云标注系统:从技术选型到生产部署 【免费下载链接】point-cloud-annotation-tool 项目地址: https://gitcode.com/gh_mirrors/po/point-cloud-annotation-tool 在自动驾驶、机器人感知和工业检测领域,3D点云标注是算…

聚焦 SAP 中国峰会智能化变革,科莱特双轨模式破解转型壁垒

聚焦 SAP 中国峰会智能化变革,科莱特双轨模式破解转型壁垒

2026/7/19 14:54:38

2026年6月3日,SAP中国峰会在北京举办。本届大会以“自主运营企业”为核心主题,释放出明确的产业信号:AI不再是企业的外挂工具,而是重塑运营范式的核心力量。SAP大中华区总裁原欣在峰会上一针见血地指出,AI能为企业创造…

XmlSchemaClassGenerator核心功能解析:为什么它是XML Schema转C的首选工具

XmlSchemaClassGenerator核心功能解析:为什么它是XML Schema转C的首选工具

2026/7/19 14:54:38

XmlSchemaClassGenerator核心功能解析:为什么它是XML Schema转C#的首选工具 【免费下载链接】XmlSchemaClassGenerator Generate C# classes from XML Schema files 项目地址: https://gitcode.com/gh_mirrors/xm/XmlSchemaClassGenerator XmlSchemaClassGen…

Claude提示词失效预警!这6类语法陷阱正在 silently 损耗你的API配额——附自动检测CLI工具(限时开源)

Claude提示词失效预警!这6类语法陷阱正在 silently 损耗你的API配额——附自动检测CLI工具(限时开源)

2026/7/19 14:44:38

更多请点击: https://intelliparadigm.com 第一章:Claude提示词失效预警与配额损耗本质解析 当Claude模型突然返回“Unable to process request”或空响应,且账户配额异常减少时,往往并非网络故障,而是提示词结构触发…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/19 0:03:49

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/19 0:03:49

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/19 0:03:49

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/19 0:03:49

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/19 0:03:49

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/19 0:03:49

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…