2017-10-17 432 views
1

我正在將大量工作簿複製到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':類型不匹配

在這些線

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': 應用程序定義或對象定義的錯誤

+1

是否有問題被問到? SheetName不存在,因此您無法將SheetNewName設置爲它,除非它出現在代碼之前的其他位置? – QHarr

+0

你的意思是使用wc.Name的部分字符串嗎? – QHarr

+0

是SHEETNAME存在,idint把代碼爲它 選擇事例wc.Cells(N,1) 案例 「PK」 SHEETNAME = 「峯值」 案 「的S factor」 SHEETNAME = 「SF供應」 案例否則 SheetName = wc.Cells(n,1) End Select – bacotico

回答

1

不能"SET"作爲字符串變量:

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

需要被修改以

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

Set Parname = wc.Range("B1") 

需要t o是

Parname = wc.Range("B1") 
+1

謝謝它的作品 – bacotico

相關問題