将工作表的副本命名为原始工作表中单元格中的值

时间:2018-12-26 16:49:40

标签: excel vba

此脚本循环遍历文件路径,并将所有工作簿组合到一个主工作簿中,并将每个工作簿都分成一个在主文件中的工作表。

我有一行ws.Name = activeworksheet.Range("B1").Value,将工作表命名为第一个工作簿工作表Sheet1的副本,并在工作表之后命名每个工作表,如Sheet1(2)。

enter image description here

如何将其更改为要合并到主工作簿中的工作簿的单元格B1中的值?

脚本的其余部分:

Option Explicit

Sub CombineWorkbooks()

    Dim MainWB As Workbook
    Dim sDirPath As String
    Dim sFileName As String
    Dim sFilePath As String
    Dim wb As Workbook
    Dim ws As Worksheet

    sDirPath = "M:\New folder"

    sFileName = Dir(sDirPath & "\*.xlsx")

    Set MainWB = ThisWorkbook

    Do While Len(sFileName) > 0

        sFilePath = sDirPath & "\" & sFileName

        Set wb = Workbooks.Open(Filename:=sFilePath)

        For Each ws In wb.Sheets
            ws.Copy After:=MainWB.Sheets(MainWB.Sheets.Count)    
            ws.Name = activeworksheet.Range("B1").Value
        Next ws

        wb.Close SaveChanges:=False

        sFileName = Dir
    Loop
End Sub  

1 个答案:

答案 0 :(得分:1)

.Copy()对象的Sheet方法之后,新创建的图纸变为 active ,而ws仍保留对原始< / em>工作表

所以像下面这样

        For Each ws In wb.Sheets
            ws.Copy After:=MainWB.Sheets(MainWB.Sheets.Count)

            ActiveSheet.Name = ws.Range("B1").Value
        Next