文件夹路径:D:\Users\WIN_X\Desktop\1
文件夹内有N个.xls 的 工作簿(每个工作簿内只有一个工作表,且所有工作表同名)
需求:把工作表的名称改为所在工作簿的名称,批量操作,不打开工作簿。
1.单击Excel2007窗口左上角的“Office 按钮”图标,在弹出的菜单中,单击“Excel选项”按钮,如上图所示。
2.在“Excel选项”对话框中,单击左侧“常用”分类,勾选“在功能区显示"开发工具"选项卡”项,单击“确定”按钮返回Excel2007主窗口,即可添加开发工具选项卡。
3.单击“开发工具”菜单-“Visual Basic”图标
4.Excel2007打开代码编辑器窗口,单击“插入”菜单-“模块”菜单项,即可插入默认的模块“模块1”,即可在右侧的VBA代码编辑器窗口输入VBA代码。
Sub Books2Sheets()
'定义对话框变量
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'新建一个工作簿
Dim newwb As Workbook
Set newwb = Workbooks.Add
With fd
If .Show = -1 Then
'定义单个文件变量
Dim vrtSelectedItem As Variant
'定义循环变量
Dim i As Integer
i = 1
'开始文件检索
For Each vrtSelectedItem In .SelectedItems
'打开被合并工作簿
Dim tempwb As Workbook
Set tempwb = Workbooks.Open(vrtSelectedItem)
'复制工作表
tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)
'把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")
'关闭被合并工作簿
tempwb.Close SaveChanges:=False
i = i + 1
Next vrtSelectedItem
End If
End With
Set fd = Nothing
End Sub