今天财务小姐姐找到我,让我帮忙用VBA 写一个合并文件夹下的Excel 文件(*.xlsx  和 *.xls),方便她整理报表。

需求如下:所有源文件有三个sheet,其中第一个sheet 需要合并,第二个sheet和第三个sheet直接复制其中一个文件的就ok。

​​​​​​​

源码如下。

Public fileNum As Integer '记录文件数
Public Path As String '目标文件夹路径
Public savePath, saveName As String '保存路径和结果文件名Public Sub main()''函数入口 主函数''Call init '调用初始化函数'调用函数keyCall key'更改result文件的sheet1名称Call setNameApplication.DisplayAlerts = True
End Sub
Public Sub init()Application.DisplayAlerts = False '关闭警告弹框fileNum = 0 '初始化读取的文件数Dim excelWB As Object  '创建Excel工作簿对象'Dim savePath, saveName As String '创建保存路径和保存名称变量Set excelApp = CreateObject("Excel.Application")Set excelWB = excelApp.Workbooks.AddPath = "D:\test\" '目标文件夹 可更改savePath = "D:\test\result\" '新建文件保存的路径 可更改saveName = "result.xlsx"  '新建文件的名称 可更改excelWB.SaveAs savePath & saveNameexcelWB.CloseexcelApp.Quit
End SubSub setName()Set rs = Workbooks.Open(savePath & saveName)ActiveWorkbook.Sheets(1).Name = "表1报销表格"rs.Savers.Close
End Sub'
'函数key :打开文件夹下所有*.xls 和*.xlsx 文档
'
'
Sub key()Dim File As String '声明文件变量Dim WB As WorkbookApplication.ScreenUpdating = False '冻结屏幕,打开各个文件及关闭时屏幕不会晃眼File = Dir(Path & "*.xl*") '一次找寻路径中的excel文件,这里到底是.xlsx还是.xls,可以自己改Do While File <> "" '当指定路径中由文件时进行循环Set WB = Workbooks.Open(Path & File) '打开符合要求的文件Application.AskToUpdateLinks = False '关闭提示的更新弹框Call merge(WB) '调用你的另一端对每个excel文件进行具体操作的宏,也可以直接写到这个宏中File = Dir '找寻下一个excel文件LoopApplication.ScreenUpdating = True '解冻屏幕,让屏幕恢复正常刷新。和上面的那一句成对使用
End Sub'
' merge 宏
'
'
Sub merge(ByRef WB)'第一文件读取 时 需要从第一行复制  包含标题 和其余sheetIf fileNum = 0 ThenfileNum = 1Set rs = Workbooks.Open(savePath & saveName)WB.ActivateDim useRow1 As IntegeruseRow1 = ActiveSheet.Range("A65535").End(xlUp).RowRows("1:" & useRow1 - 1).Copyrs.Activaters.Sheets("Sheet1").ActivateRows.SelectDim str1 As StringRange("A1").PasteSpecial xlPasteValuesAndNumberFormatsRange("A1").PasteSpecial xlPasteFormatsWB.Sheets("请勿动此表-下拉列表制作").Copy After:=rs.Sheets("sheet1")WB.Sheets("项目清单").Copy After:=rs.Sheets("请勿动此表-下拉列表制作")WB.ActivateThisWorkbook.Saved = TrueActiveWorkbook.SaveActiveWindow.Closers.Savers.CloseElseSet rs = Workbooks.Open(savePath & saveName)WB.ActivateDim useRow As IntegeruseRow = ActiveSheet.Range("A65535").End(xlUp).RowRows("3:" & useRow - 1).Copyrs.ActivateDim rownum As Longrs.Sheets("Sheet1").ActivateRows.Selectrownum = ActiveSheet.Range("A65535").End(xlUp).RowDim str As StringRange("A" & CStr(rownum)).PasteSpecial xlPasteValuesAndNumberFormatsRange("A" & CStr(rownum)).PasteSpecial xlPasteFormatsrs.Sheets("Sheet1").ActivateRows.SelectApplication.AskToUpdateLinks = FalseActiveWorkbook.SaveActiveWindow.CloseThisWorkbook.Saved = TrueWB.CloseEnd IfEnd Sub

Excel 中VBA 合并报表案例相关推荐

  1. Excel使用VBA合并单列、多列单元格

    Excel使用VBA合并单列.多列单元格 多列合并相同内容单元格 合并相同单元格的功能如下同,让相同内容的单元格合并为一个. 具体代码如下: Sub 相同内容合并单元格() ' ' '' Dim i, ...

  2. C# 获取Excel中的合并单元格

    C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这 ...

  3. 怎么在html的表格中加筛选,excel中表头合并单元格的筛选

    EXCEL中表头合并,怎么实现筛选数据? 亲,如下面的动画演示,选中第5行,点击菜单"数据","筛驯. excel中有合并单元格的行怎么才能筛选整个表格其中 直接对合并过 ...

  4. Java读取Excel中的合并单元格

    本文以Java示例展示读取Excel中的合并单元格的方法. 1. Maven仓库下载导入 在pom.xml中配置maven路径,指定依赖,如下: <dependency><group ...

  5. c语言运行excel中vba程序,VBA代码在WPS上可运行,在EXCEL中报错

    本人是一名VBA爱好者兼VBA小白,因工作需要,最近想要做1个EXCEL模板,通过VBA代码自动调用浏览器下载数据,导入EXCEL中进行处理.但在编写VBA代码过程中发现,同样的代码在WPS中可以运行 ...

  6. Excel中VBA操作工作表相关

    VBA中已有工作簿合并表格数据 Sub 合并目录所有工作簿全部工作表() On Error Resume Next Dim MP, MN, AW, Wbn, wn Dim Wb As Workbook ...

  7. python和vba操作excel_python调用excel中VBA代码

    python中调用excel中的VBA代码,本机需要安装python以及该python版本对应的"pywin32-214.win32-py2.5.exe" #!/usr/bin/e ...

  8. 将excel中的合并单元格拆分并填充数据

    需求场景: 有时候处理EXCEL时,会遇到合并单元格的数据.如果直接用pandas空值补全,会导致空单元格会被相邻的数据填充.需要处理合并单元格的同时,不影响原有的空值单元格. 实现思路: 使用 op ...

  9. Excel中VBA编程学习笔记(一)

    1.注释及编码规则 注释: 单引号:可以位于句子结尾或者单独一行: Rem:单独一行 编码规则: 如果VB中的关键字是由多个英文字母组成,则系统自动将每个单词的首字母转换成大写字母,其余字母一律转换成 ...

最新文章

  1. 剑指offer_第16题_合并两个排序的链表_Python
  2. 构建工具Gradle
  3. oracle数据库可以存图片吗,如何往数据库(Oracle)里存储图片和文件
  4. php range第二个参数比第一个小,鲜为人知的 PHP range() 函数
  5. Android adt 初步理解和分析(三)
  6. mysql统计各部门人数_2019年内蒙古普通高校招生考试各分数段人数统计表公布
  7. python 魔法方法常用_Python魔法方法指南
  8. Android解决依赖冲突
  9. JAVA两类比较器的区别(Comparable,Comparator)
  10. LeetCode 893. 特殊等价字符串组
  11. js 获取最后一个字符
  12. windows卸载qt_如何在Qt中显示一个窗口并在关闭后立即将其删除?
  13. sqlsever 导入大数据sql文件
  14. 947. 移除最多的同行或同列石头2021-01-23
  15. Oracle,Mysql,Sqlserver数据库连接串(总爱忘,留着备用)
  16. Unity播放声音的两种方式以及相关遇到的
  17. xodo pdf android,Xodo PDF查看器和编辑器「Xodo PDF Viewer Editor」
  18. 给你的服务器建立动态域名服务
  19. 【推理引擎】ONNXRuntime 的架构设计
  20. 初一数学绩差,需要补习初一数学吗?

热门文章

  1. 如果python程序运行时进入了死循环_碰到python死循环后要怎么退出结束?
  2. 国家卫健委医院管理研究所 电子病历系统应用水平分级评价4级实证材料--基础项
  3. “玩泥巴”有利健康?接触环境微生物群可能调节肠道菌群和免疫系统
  4. Mark一个关于Thymeleaf 使用th:field属性与对象属性绑定的小问题
  5. 量化分析师的Python日记【第2天:再接着介绍一下Python呗】
  6. 物联网到底是什么,生活中能用得上吗?
  7. 程序员之 //是什么意思
  8. vnc连接不上,为什么vnc连接不上,原因是什么
  9. 数据库系统概念 | 第三章:SQL介绍
  10. 声网再亏损,故事好讲但不好听