2017-10-17 9 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

はイエスシート名は(nは、1)それ のSelect Case wc.Cellsエルス ケース "PK" SHEETNAME = "ピーク" ケース "Sfactor" SHEETNAME = "SFサプライ" ケースのコードを入れidint、存在します SheetName = wc.Cells(n、1) End Select – bacotico

答えて

1

あなたがすることができません"SET"

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

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

Set Parname = wc.Range("B1") 
に変更する必要があります

が必要ですo be

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

で動作しているようです – bacotico