Excel VBA提取工作表名称
- 格式:doc
- 大小:85.50 KB
- 文档页数:5
VBA提取工作薄内所有工作表名称
处理Excel工作薄的工作表时,如果工作表数量较多,怎样将所有工作表名称提取出来,便于以后修改、删除工作表?VBA代码能快速处理。
1、同一工作薄内所有工作表名称,提取到指定工作表的指定位置(如工作表“Sheet1”A列),代码如下:
Dim SheetsName As Integer
For SheetsName = 1 To Worksheets.Count
Sheets("Sheet1").Cells(SheetsName, 1).Value =
Worksheets(SheetsName).Name Next
2、同一工作薄内所有工作表名称提取到新建工作表内,如新建工作表名称“目录”。应先判断有无名为“目录”工作表,并将新建工作表放在指定位置,如所有的工作表最后面、最前面、某个工作表前或后、所有工作表序列几号的位置等。代码如下:
Dim SheetActive As Worksheet
Dim NewSheet As Worksheet
Dim Sheet As Worksheet
Dim SheetsNumb As Integer
Dim ActiveSheet As Worksheet
Dim ActiveSheetsName As String
Dim i As Integer
ActiveSheetsName = "目录"
On Error Resume Next '代码出错时继续运行
Set SheetActive = ActiveSheet '确定活动单元格名称
i = 0
For Each Sheet In Worksheets
If = ActiveSheetsName Then '遍历工作表,判断有无"目录"工作表名称,若有,变量赋值变化。
i = 1
Exit For
End If
Next
If i <> 1 Then '若无指定工作表,则新建工作表
' Set NewSheet =
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) '新建工作表放在最后
Set NewSheet =
ThisWorkbook.Sheets.Add(Before:=ThisWorkbook.Sheets(1))
'新建工作表放在最前面
= ActiveSheetsName
End If
For SheetsNumb = 1 To Worksheets.Count
Sheets(ActiveSheetsName).Cells(SheetsNumb, 1).Value
= Worksheets(SheetsNumb).Name '提取工作表名称放在目标工作表A例
Next
Sheets(ActiveSheetsName).Activate '设置活动工作表
3、提取同一文件夹、不同工作薄内的所有工作表名称,如提取同一文件夹内工作薄名为“出入库清单”内的所有工作表名称,代码如下:
Dim YPath As String
Dim folderPath As String
Dim fname As String
Dim fPath As String
Dim MWorkbook As String
Dim Mxls As String
Dim MPath As String
Dim i As Integer
Dim wb As Workbook
folderPath = Application.ActiveWorkbook.Path '提取当前工作薄路径
fname = '提取当前工作表名称
fPath = Replace(folderPath, fname, "") '替换工作薄名称,取得同一文件夹的路径
MPath = fPath + "\" + MWorkbook + Mxls '合成需操作工作江薄的总路径
MWorkbook = "出入库清单"
Mxls = ".xls"
'打开指定路径下的工作表 Workbooks.Open Filename:=fPath + "\" + MWorkbook + Mxls
Windows(MWorkbook & Mxls).Activate
Dim MSheetName() As Variant
Dim Sheet As Worksheet
Dim SheetNumb As Integer
Dim j As Integer
i = 0
j = 0
Dim SheetName As String
Dim SheetLength As Integer
SheetNumb = Sheets.Count
ReDim MSheetName(SheetNumb)
For Each Sheet In Worksheets
MSheetName(i) =
i = i + 1
Next
Workbooks(MWorkbook & Mxls).Close
Cells(1, 1) = MWorkbook & Mxls & "内工作表有"
For j = 0 To i
Cells(j + 2, 1) = MSheetName(j)
Next