如何将所有工作表名称复制到同一工作簿中的特定工作表?

时间:2019-01-24 09:58:13

标签: excel vba

我是Stackoverflow平台(尤其是VBA)的新手,只是迈出了第一步。 所以我有以下问题: 我的工作簿中有几张纸,我需要复制这些纸的名称,但要将这些名称复制到的一张纸的名称除外。名称也应复制到特定位置。 到目前为止,我想到了这个:

Sub passport_combining()

Dim i As Worksheet

For Each i In ActiveWorkbook

If i.Name <> "Sheetname_I_dont_need_to_copy_to" Then

    Range("G").Value = Range("G" & Rows.Count).End(xlUp).Offset(1).Select.i.Name

    ActiveSheet.paste

End If    

Next i

End Sub

代码需要遍历除我要复制的工作表之外的所有工作表,从这些工作表中获取名称并将其复制到最后工作表的G列的lastrow + 1中 我从技术上理解提出解决方案需要做什么,但我确实陷入了一个问题!我什至尝试在复制工作表名称的地方记录一个宏,但不幸的是,所有VBA给我的都是一堆Select选项,建议避免使用。 任何意见将是有益的! 谢谢!

3 个答案:

答案 0 :(得分:2)

这里是一种选择:

With ThisWorkbook.Sheets("Summary")
    Set nextEntry = .Range("G4")
    For Each wsheet In ThisWorkbook.Sheets
        If wsheet.Name <> "Summary" Then
            nextEntry.Value = wsheet.Name
            Set nextEntry = nextEntry.Offset(1, 0)
        End If
    Next wsheet
End With

“摘要”是要在其上使用所有名称的工作表的名称,而.Range("G4")是数据的起始位置

更新: 下面的代码将在插入工作表名称之前检查“ G列”中的值

参考:https://stackoverflow.com/a/12648557/9167318

With ThisWorkbook.Sheets("Summary")
    For Each wsheet In ThisWorkbook.Sheets
        If wsheet.Name <> "Summary" Then
            Set nextEntry = .Cells(.Rows.Count, "G").End(xlUp).Offset(1, 0)
            If IsError(Application.Match(wsheet.Name, .Range("G:G"), 0)) Then nextEntry.Value = wsheet.Name
        End If
    Next wsheet
End With

答案 1 :(得分:0)

简单尝试以下操作

Sub AllSheets()
Dim sht As Worksheet
Dim i As Long

    i = 1
    For Each sht In ThisWorkbook.Worksheets
        If sht.Name <> ActiveSheet.Name Then
            Cells(i, "G") = sht.Name
            i = i + 1
        End If
    Next sht

End Sub

然后根据需要调整代码。

答案 2 :(得分:0)

下面的代码导入工作表1列A中的所有工作表名称。

Option Explicit

Sub Get_Sheets_Name()

    Dim ws As Worksheet
    Dim Lastrow As Long

    'Loop all sheets in this workbook
    For Each ws In ThisWorkbook.Worksheets

        With ThisWorkbook.Worksheets("Sheet1")
            'Find of Sheet1 & Column A lastrow
            Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row

            'Import Sheet name in Sheet 1 & Column A
            .Cells(Lastrow + 1, 1).Value = ws.Name

        End With

    Next

End Sub