当前位置: 首页 > news >正文

VBS脚本搞定,快速批量提取一堆Excel文件中的数据

1.需求诞生

小王就职于一家国有大型企业,工作业务十分繁忙,在处理企业某业务数据时,需要从上千个Excel文件中提取某一单元格位置的数据,并整理到另一个Excel文件。要说是这样的Excel文件仅有几个或者十几个也还好,手动点开复制粘贴并不是难事。

但是面对一下子上千个的文件,要靠人工操作恐怕是非常不现实的,小王顿感到十分地为难。好在,他这时候想到了自己的好朋友“八两”。八两听完了小王的介绍,知道这样的需求肯定是可以软件实现的,于是对小王说,你把文件发给我吧,我下班回家后写代码帮你提取数据。可是小王却说,这些文件涉及到企业核心经营数据,实在不方便提供。于是问题暂时陷入了僵局。

2.实现思路

小王不懂代码,更不会编写软件,无法提供Excel文件肯定是不方便调试的,所以凭空写一个应用程序发给小王,万一遇到软件有Bug的地方也不便于调试。好在还有一种编程语言叫做脚本语言,比如说VBS,VBS的脚本程序扩展名即为.vbs,使用记事本文件可以直接编写,保存后还可以双击直接在Windows系统上运行,遇到异常的话,远程指导小王修改其中的脚本代码也相对容易。于是八两决定使用记事本来完成这样一件任务。

3.核心代码

废话不多说,直接贴出全部脚本代码。

' 定义文件夹路径
Dim folderPath
folderPath = "D:\YourFolderPath\"
' 定义目标 Excel 文件路径
Dim targetExcelPath
targetExcelPath = "D:\YourTargetExcel.xlsx"
' 打开文件夹
Set folder = CreateObject("Scripting.FileSystemObject").GetFolder(folderPath)
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True ' 设置Excel可见
Set targetWorkbook = objExcel.Workbooks.Open(targetExcelPath)
Set targetWorksheet = targetWorkbook.Worksheets(1)
' 遍历文件夹中的 Excel 文件
dim row,col
' row,col是定义写入位置的初始位置,行和列号
row=1
col=1
For Each file In folder.FilesIf LCase(Right(file.Name, 4)) = ".xls" Or LCase(Right(file.Name, 5)) = ".xlsx" Then' 打开 Excel 文件Set workbook = objExcel.Workbooks.Open(file.Path)' 选择要提取数据的工作表Set worksheet = workbook.Worksheets(1)' 提取相同位置的数据Dim dataToExtract' 这句的1,1是指读取文件中要读取数据的 位置是第1行第1列。dataToExtract = worksheet.Cells(1, 1).Value' 将数据写入目标表格targetWorksheet.Cells(row, col) = dataToExtractrow=row+1' 关闭打开的 Excel 文件workbook.CloseEnd If
Next
' 显示完成消息
MsgBox "数据提取完成!"

注意,这里的代码用记事本保存时,编码一定要选择为ANSI,如果保存为UTF-8或者其他编码格式,运行是会报错的。保存时,保存类型选择为“所有文件(*.*)”,文件名为“提取数据.vbs”即可。

4.完整文件

普通脚本文件而已,大家复制保存后,修改运行即可,就不上传单独的文件了。

http://www.lryc.cn/news/308800.html

相关文章:

  • 大数据分析案例-基于SVM支持向量机算法构建手机价格分类预测模型
  • WPF 滑动条样式
  • 论文设计任务书学习文档|基于Web的个性化简历职位推荐系统的设计与实现
  • Win11系统安装安卓子系统教程
  • Python实现双向链表:从基础到应用
  • c# 读取DataGridView中的数据
  • Stable Diffusion中的Clip模型
  • Python批量提取文件夹中图片的名称及路径到指定的.txt文件中
  • 微软开源 SBOM 生成工具:sbom-tool下载及使用详解
  • 【办公类-18-03】(Python)中班米罗可儿证书批量生成打印(班级、姓名)
  • js【详解】数据类型原理(含变量赋值详解-浅拷贝)
  • SAM 影像分割——地理空间数据的分段模型的数据调参和自动分割分析
  • Java底层自学大纲_设计模式篇
  • 详解字符串函数<string.h>(上)
  • 1、docker入门
  • Qt应用软件【测试篇】cppchecker静态代码检查
  • [递推与递归]数的计算
  • Cocos Creator 3.8.x 后效处理(前向渲染)
  • 【前端素材】推荐优质后台管理系统 Adminity平台模板(附源码)
  • 身份证号与姓名实名认证接口-二要素实名认证-C++接口代码
  • 笑营宝高校选修课报名考勤系统源码开发方案
  • 类型字段定义影响WebApi传值及SqlSugar调用Select创建新对象
  • golang 函数式编程库samber/mo使用: IO
  • 在OceanBase使用中,如何优化因Join估算不准导致执行计划选错的问题
  • potplayer安装
  • PostgreSQL 与MySQL 对比使用
  • 配置nginx代理访问openai接口
  • 使用Python语言实现一个基于动态数组的序列队列
  • 面试数据库篇(mysql)- 07索引创建原则与失效及优化
  • 《互联网的世界》第三讲-tcp