注册账号 登录
用友之家-用友软件论坛 返回首页

stonys的个人空间 https://www.oyonyou.com/?96 [收藏] [复制] [分享] [RSS] 空间描述空间描述空间描述空间描述

日志

EXCEL合并文件及合并工作表(工作薄)的通用方法[转]

热度 7已有 1758 次阅读2010-2-24 22:22 |个人分类:电脑使用

使用MS OFFICE EXCEL的时候经常遇到:
(1)需要将多个 Excel 文件进行合并;
(2)需要将多个 Sheet 进行合并;
这里给出最佳答案。当然您得需要会使用宏(MICRO)。

功能一:合并Excel文件

Sub CombineWorkbooks()
Dim FilesToOpen, ft
Dim x As Integer
Application.ScreenUpdating = False
On Error GoTo errhandler

FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Micrsofe Excel文件(*.xls), *.xls", _
MultiSelect:=True, Title:="要合并的文件")

If TypeName(FilesToOpen) = "boolean" Then
MsgBox "没有选定文件"
End If

x = 1
While x <= UBound(FilesToOpen)
Set wk = Workbooks.Open(Filename:=FilesToOpen(x))

wk.Sheets().Move after:=ThisWorkbook.Sheets _
(ThisWorkbook.Sheets.Count)
x = x + 1
Wend

MsgBox "合并成功完成!"

errhandler:
End Sub

功能二:合并任意的 Sheet
合并之前,请先创建一个空白的 Sheet 作为合并目标 Sheet ,这个 Sheet 必须是第一个 Sheet 哦。
如果不合并标题行(比如第一行)则 j=1 改为 j=2
如果数据不是从第一行,或者第一列开始的,请修改 j=1 及 k=2 两行的参数。
比如 j=2 k=3 表示从 第2行,第三列开始的数据。

Sub CombineSheet()

Dim i, j, k, n As Integer
n = 1
For i = 2 To ThisWorkbook.Sheets.Count
For j = 1 To ThisWorkbook.Sheets(i).UsedRange.Rows.Count
For k = 1 To ThisWorkbook.Sheets(i).UsedRange.Columns.Count
ThisWorkbook.Sheets(1).Cells(n, k).Value = ThisWorkbook.Sheets(i).Cells(j, k).Value
Next k
n = n + 1
Next j
Next i

End Sub

意外惊喜:合并 Sheet 的功能会自动去掉 超链接(HREF) 标记。
实际上,为了去掉 Excel 的所有超链接,也可以使用这个函数啊。

路过

雷人
4

握手

鲜花

鸡蛋

刚表态过的朋友 (4 人)

发表评论 评论 (3 个评论)

回复 490743255aa 2011-8-20 12:34
好贴
回复 ruishasha 2011-9-14 10:02
沙发  

回复 linxuying 2012-3-4 21:01
  

facelist

您需要登录后才可以评论 登录 | 注册账号

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-4-29 17:55 , Processed in 0.046245 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部