将工作表复制到新的工作簿,并将工作表的名称更改为撰写名称

我将许多工作簿复制到1个工作簿,但由于不同工作簿上的所有工作表都具有相同的名称,并且每个工作簿都具有B1上文件的名称,所以我想将新工作表命名为“违规(名称)”

这是我对这部分的代码

Dim wc As Worksheet Dim ws As Worksheet Dim SheetNewName As String Dim Parname As String Dim SheetName As String Select Case wc.Cells(n, 1) Case "PK" SheetName = "Peak" Case "Sfactor" SheetName = "SF Supply" Case Else SheetName = wc.Cells(n, 1) End Select Set ws = ThisWorkbook.Sheets("Sheet1") Set wc = ActiveWorkbook.Sheets("Violations Summary") Set Parname = wc.Range("B1") Set SheetNewName = SheetName & "(" & Parname & ")" ActiveWorkbook.Sheets(SheetName).Copy After:=ThisWorkbook.Sheets(1) Set lastsheet = ThisWorkbook.Sheets(ThisWorkbook.Sheets.count).Select lastsheet.Name = SheetNewName 

试图更改新工作簿上的新工作表的名称时出现错误,错误是

运行时错误“13”:types不匹配

在这些线上

 Set SheetNewName = SheetName & "(" & Parname & ")" 

但是,如果我修改代码是这样的

 Set Parname = wc.Range("B1") Set SheetNewName = SheetName & "(" & Parname & ")" ActiveWorkbook.Sheets(SheetName).Copy After:=ThisWorkbook.Sheets(1) Set lastsheet = ThisWorkbook.Sheets(1).Select lastsheet.Name = Parname 

它复制表单,但不能更改名称并出错

运行时错误“1004”:应用程序定义或对象定义的错误

你不能"SET"为stringvariables:

 Set SheetNewName = SheetName & "(" & Parname & ")" 

需要修改为

 SheetNewName = SheetName & "(" & Parname & ")" 

 Set Parname = wc.Range("B1") 

需要是

 Parname = wc.Range("B1")