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

来源:互联网 发布:网络实名制的好处 编辑:程序博客网 时间:2024/05/02 04:18

原文地址:http://www.legalsoft.com.cn/docs/1008.html


使用MS OFFICE EXCEL的时候经常遇到:

(1)需要将多个 Excel 文件进行合并;
(2)需要将多个 Sheet 进行合并;
这里给出最佳答案。当然您得需要会使用宏(MICRO)。

功能一:合并Excel文件

Sub CombineWorkbooks()Dim FilesToOpen, ftDim x As IntegerApplication.ScreenUpdating = FalseOn Error GoTo errhandlerFilesToOpen = Application.GetOpenFilename _(FileFilter:="Micrsofe Excel文件(*.xls), *.xls", _ MultiSelect:=True, Title:="要合并的文件")If TypeName(FilesToOpen) = "boolean" ThenMsgBox "没有选定文件"End Ifx = 1While x <= UBound(FilesToOpen)Set wk = Workbooks.Open(Filename:=FilesToOpen(x))wk.Sheets().Move after:=ThisWorkbook.Sheets _(ThisWorkbook.Sheets.Count)x = x + 1WendMsgBox "合并成功完成!"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 Integern = 1For i = 2 To ThisWorkbook.Sheets.CountFor j = 1 To ThisWorkbook.Sheets(i).UsedRange.Rows.CountFor k = 1 To ThisWorkbook.Sheets(i).UsedRange.Columns.CountThisWorkbook.Sheets(1).Cells(n, k).Value = ThisWorkbook.Sheets(i).Cells(j, k).ValueNext kn = n + 1Next jNext iEnd Sub
意外惊喜:合并 Sheet 的功能会自动去掉 超链接(HREF) 标记。
实际上,为了去掉 Excel 的所有超链接,也可以使用这个函数啊。