首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel 实现将多个工作薄合并到一个工作薄的方法?

我们日常工作中经常需要将多个格式一样的工作薄合并到一个工作薄中。方法有很多,今天我们来学习其中的一种方法:

实现逻辑:

今天要学习的这个实现的方法比较简单,就是相当于手工一个个打开将每个要合并的工作薄里的工作表复制出来粘贴到目标工作表中。只是通一小段代码代替人工一步步的操作去实现。

具体步骤如下:

将如下图所示明细表合并到合并模板中。

总表(合并模板)表如下:

总表是只有表头的空表。

明细表如下:

创建一个新工作表并另存允许运行VBA代码格式的文档合并模板.xlsm。ALT+F11 创建程序模块如下图:

具体内容:

Sub merge_workbook()

'定义变量

Dim n, i As Integer

Dim answer As Integer

Dim myrange As Object

Application.ScreenUpdating = False '禁止屏幕刷新

Application.DisplayAlerts = False '禁止保存对话框提示

n =val( InputBox("请输入要合并的个数"))

For i = 1 To n

Workbooks.Open Filename:="C:\temp\维修发料明细(" & i & ").xlsx" '打开表

Set myrange = Worksheets("维修发料明细").Range("A:A") '定义对象

answer = Application.WorksheetFunction.Count(myrange) '计算内容行数

If answer > 1 Then

Range("A2:P2").Select '选定单元格

Range(Selection, Selection.End(xlDown)).Select '向下扩选单元格

Else

Range("A2:P2").Select '选定单元格

End If

Selection.Copy '复制内容

Windows("合并模板.xlsm").Activate '激活工作薄

Set myrange = Worksheets("Sheet1").Range("A:A") '定义对象

answer = Application.WorksheetFunction.Count(myrange) '计算已合并的行数

Range("A" & answer + 2).Select '定位单元格位置

'Selection.End(xlDown).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False '数值粘贴

Windows("维修发料明细(" & i & ").xlsx").Close '关闭明细表

Next i

Application.DisplayAlerts = True '撤消禁止屏幕刷新

Application.ScreenUpdating = True '撤消禁止保存对话框提示

End Sub

创建程序按钮:

输入要合并的文件数即可。

另:本例的文件目录放在C:\TEMP\,文件的个数按合并文件的明细后的编号。

今天分享的案例就到此了,希望此案例能对大家的日常工作有所帮助。喜欢我的内容请分享,转发、点赞、收藏吧。有任何疑问可以私信我哦。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200904A0PIFM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券