一、问题的提出

有模板工作簿1,其中有工作表A和工作表B两个工作表。现在要求把工作簿1中的工作表B批量复制到当前目录下的其它近百个工作簿中,保持原有的工作表名不变,同时把其中的公式更新为引用当前工作簿的内容。

二、算法分析

如果手工复制、粘贴,然后用查找替换的方法更新公式,可能会改变工作表的格式,同时也会非常的繁琐、耗时。

所以考虑使用VBA来批量解决这一问题。算法步骤如下:

  1. 要获取工作簿1中工作表B的内容
  2. 遍历当前目录下所有的xls文件,并排除掉工作簿1.xls
  3. 批量打开文件后,进行复制,然后更新公式,最后是保存。

三、代码展示

以下是通过VBA编写的程序,需要将这个程序放在工作簿1.xls中新建的模块里,然后运行就可以了。

Sub BatchCopyWorksheetFromAnotherWorkbook()Dim fso As ObjectDim folderPath As StringDim file As ObjectDim sourceWorkbook As WorkbookDim targetWorkbook As WorkbookDim targetWorksheet As WorksheetDim sourceWorksheet As WorksheetDim sourceWorkbookName As StringDim sourceWorksheetName As String' 获取当前目录路径folderPath = ThisWorkbook.Path' 创建FileSystemObject对象Set fso = CreateObject("Scripting.FileSystemObject")sourceWorkbookName = ActiveWorkbook.Path & "/工作簿1.xls"  ' 替换为实际的源工作簿文件名sourceWorksheetName = "工作表B"  ' 替换为实际的源工作表名称Set sourceWorkbook = Workbooks.Open(sourceWorkbookName) ' 遍历当前目录下的所有文件For Each file In fso.GetFolder(folderPath).Files' 排除文件名中包含"工作簿1.xls"的文件If Not file.Name Like "*工作簿1.xls*" And file.Name Like "*.xls*" Then' 打开源工作簿Set targetWorkbook = Workbooks.Open(file.Path)' 创建目标工作表'Set targetWorkbook = ThisWorkbook ' 当前工作簿'Set targetWorksheet = targetWorkbook.Sheets.Add(After:=targetWorkbook.Sheets(targetWorkbook.Sheets.Count))'targetWorksheet.Name = "工作表B"' 复制源工作表到目标工作簿Set sourceWorksheet = sourceWorkbook.Sheets(sourceWorksheetName) ' 替换为实际的源工作表名称'sourceWorksheet.Copy After:=targetWorksheetsourceWorksheet.Copy After:=targetWorkbook.Sheets(targetWorkbook.Sheets.Count)' 替换公式中的引用targetWorkbook.Sheets(targetWorkbook.Sheets.Count).Cells.Replace What:="[工作簿1.xls]", Replacement:="", LookAt:=xlPart, _SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ReplaceFormat:=False' 关闭源工作簿,不保存更改targetWorkbook.Close SaveChanges:=TrueEnd IfNext file
End Sub

四、学后反思

  1. VBA在操作Excel方面优势明显,尤其是在格式复制方面更为突出。
  2. VBA中要用绝对引用,不要用相对引用,否则可能会报错。
  3. 编写前开启:Option Explicit,明确要求所有的变量都要提前声明。
  4. VBA也是面向对象的编程语言,和Python有相通之处,因此可以相互借鉴。

VBA批量复制Excel表并更新表中的公式相关推荐

  1. Word VBA(批量复制Excel表格和Word表格到Word中)

    Function Test()  '使用双字典          SearchPath = FolderDialog("请选择文件夹")     If SearchPath = & ...

  2. 如何批量合并Excel文件和工作表 - Excel合并器使用教程

    Excel是人们用于创建日常工作表和统计信息的最流行的工具,在我们工作中经常接触到Excel的XLSX和XLS格式文件.不少朋友应该有时会发现,管理太多的Excel工作表和文件是一件头疼的事情,经常需 ...

  3. SQL语句(复制一张表和更新表)

    sql语句复制一张表 1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete fr ...

  4. java操作mysql导表_Java实现批量导入excel表格数据到数据库中的方法

    本文实例讲述了Java实现批量导入excel表格数据到数据库中的方法.分享给大家供大家参考,具体如下: 1.创建导入抽象类 package com.gcloud.common.excel; impor ...

  5. VBA实现从EXCEL单元格更新或修改PPT对应文本框内容并且不改变格式

    VBA实现从EXCEL单元格更新或修改PPT对应文本框内容并且不改变格式 配置工作 开发 演示 注意点!!! 打赏 原创不容易,请不要抄袭! 配置工作 EXCEL 2010版本以上配置 文件-选项-自 ...

  6. 表的插入、更新、删除、合并操作_12_通过表关联更新表

    通过表关联更新表 需求描述 需求:更新emp表里的sal字段的值为temp表里的sal乘以1.5,这些员工号同时出现在在temp表中. 解决方法:这里通过UPDATE TableName SET Co ...

  7. Java自动切表_java_Mybatis自动创建表和更新表结构,最近有小伙伴问我mybatis有没有 - phpStudy...

    Mybatis自动创建表和更新表结构 最近有小伙伴问我mybatis有没有自动创建表结构的功能,因为他们之前一直使用hibernate用习惯了,理所当然的认为,在实体类上配置下注解或者写写映射文件,系 ...

  8. 如何利用VBA批量更改Excel文件的内容

    心得(5):利用VBA批量更改Excel文件的内容 问题:因为接受的所有Excel文件都是相同格式的,但是有个单元格的内容就是需要,主办方来更改,如下所示: 获奖级别,得由主办方来更改,但是如果一个一 ...

  9. vba批量复制工作表1并重命名

    1.打开工作簿 2.生成代码并运行 Sub 批量复制工作表1并重命名() Dim i For i = 2 To 10       Sheets(1).Copy after:=Sheets(Sheets ...

最新文章

  1. Java IO流之缓冲流
  2. 乐观锁与悲观锁各自适用场景是什么?
  3. kotlin 查找id_Kotlin程序查找矩阵的转置
  4. android 监听webView滑动距离和标题栏颜色渐变
  5. 网络爬虫--21.Scrapy知识点总结
  6. 工程师已经被虐到不行不行的了
  7. python3生成器与迭代器_Python3迭代器与生成器
  8. 3年后准确率仍达97%:利用谷歌语音转文本 API 绕过reCAPTCHA
  9. 关于jquery 1.9以上多次点击checkbox无法选择的
  10. python统计时间的次数的代码_python脚本实现统计日志文件中的ip访问次数代码分享...
  11. 视频教程-CCNA自学视频课程专题四:CCNA认证重点难点解析3(扩展篇)-思科认证
  12. 通用能力-智力题专项练习
  13. 淘宝评论爬虫python
  14. How to set the Default Page in ASP.NET?
  15. python字符串与十六进制互相转换
  16. AD域账号日常维护常用操作
  17. 无线通信基础知识12:数字通信之信源编码
  18. LM07丨细聊期货横截面策略
  19. AtCoder Beginner Contest 250 C~E 题解
  20. android ble peripheral,Android - BlueTooth BLE 之 Central 与 Peripheral 理解

热门文章

  1. 主人牵狗散步晕倒丧命 忠犬不离含泪守殡棺
  2. 厉害了!多家媒体争相报道!这家低调的公司历史比BAT还长
  3. cisco设备基本配置命令
  4. 织梦php截取url,织梦一个标签获取当前链接url
  5. 树链剖分代码(洛谷3384)
  6. tree-table 树形表格
  7. 计算机上标准偏差怎么算,如何有效计算运行标准偏差?
  8. 【计算机基础】半角符号与全角符号
  9. 问卷调查 | 昇思大模型平台满意度调研,带走惊喜“壕”礼
  10. 无刷无霍尔BLCD电机控制(转)