合并多个Excel 到同一个工作簿中,批量修改sheet名,批量删除指定sheet
(60条消息) 合并多个Excel ,批量修改sheet名,批量删除多个指定sheet_aldsong123的博客-CSDN博客_excel批量改sheethttps://blog.csdn.net/aldsong123/article/details/86235365?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-7.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-7.nonecase
一 :合并多个excel到同一个excel表中,分成多个sheet展示。
效果:
(1)首先,可以把要合并的工作簿excel放到一个工作夹中,新建一个空白excel工作簿
(2)在空白簿里面右键单击sheet1, 再弹出菜单中点击查看代码 ,调出vb编辑框
(3)把下面代码复制到vb编辑器中 (注:代码中的 *.xlsx 是要合并文件的文件类型,可以修改自己的文件类型如:*.xls)
Sub 工作薄间工作表合并()
Dim FileOpen
Dim X As Integer
Application.ScreenUpdating = False
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(*.xlsx),*.xlsx", MultiSelect:=True, Title:="合并工作薄")
X = 1
While X <= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
X = X + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
errhadler:
MsgBox Err.Description
End Sub
(4)点击 绿三角 按钮执行程序 ,会弹出一个宏定义框,然后点击运行。
(5)然后会弹出一个选择文件夹的框,你可以选择要合并的工作簿了,然后点击打开,就开始合并了,如果出现一些提示,可以视情况而定选是或否。
视情况而定,这个提示跟你要合并的内容有关
-----------------------------------------------批量修改sheet名---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二 :批量修改sheet名
(1)在合并后的工作簿的所有sheet前建一个空白sheet 并命名为目录,命名随意但是要和代码里的保持一致
(2)右键单击目录,点击 “查看代码” 调出 vb编辑器把下面代码复制进去 ,点击运行按钮 ,然后把vb编辑器最小化,你会看到生成的所有sheet的名字
(注:代码中的“目录”,是第一个sheet的名子)
Public Sub 获取各工作表的名称()
For i = 1 To Worksheets.Count
Sheets("目录").Cells(i, 1).Value = Worksheets(i).Name
Next
End Sub
(3)A 列是获得的所有sheet名字,然后再在 B 列新增上要修改的名字,要一一对应,
(4)再打开刚缩小化的vb编辑器,把下面代码复制进去执行;
Public Sub 更改名称()
For i = 2 To Worksheets.Count
Worksheets(i).Name = Worksheets("目录").Cells(i, 2).Value
Next
End Sub
(5)上面执行完后,到这一步就算可以了
-----------------------------------------------批量删除指定sheet---------------------------------------------------------
三 :批量删除指定sheet
如上可以先获取所有sheet 的名字, 然后把下面代码粘到模糊vb编辑器里面执行,
Sub 为什么用for循环无法删除()
Set d = CreateObject("scripting.dictionary")
For i = 1 To Sheets.Count
If Sheets(i).Name Like "岗位清单*" Then
d(Sheets(i).Name) = ""
End If
Next
For Each K In d.keys
Sheets(K).Delete
Next
End Sub
(1)代码中修改要删除的sheet名,可以模糊匹配
(2)点击 <绿色小三角> 按钮执行 会有个弹出框,再点 “运行” (注:先点绿色小三角运行)
(3)然后就开始开始批量删除了