2011-12-30 11 views
1

VBAで一括リネームシートにどのような方法があります:エクセルVBA:一括リネームシート

のような何か:

sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!") 

命名シート1、2、3 "HEP"、 "ちょっと" などとは「ヘパ!」明らかに

答えて

2
  • それは動作しません直接
  • そして SelectedSheetsといくつかの実験はanywereこれは私がそれを得ることができる限り近い

は、他の誰かがスキップする方法を見つけることがつながりませんでしたループ

[エラー処理を含めてこれを標準的な方法で更新しました。以前はこのようなシートのコレクションを設定しようとしていませんでした。

Normal Code

Sub Normal() 
    Dim strShtOld() 
    Dim strShtNew() 
    Dim sht As Worksheet 
    Dim lngSht As Long 
    strShtNew = Array("hep", "hey", "heppa!") 
    strShtOld = Array("Sheet1", "Sheeta2", "Sheet3") 
    On Error Resume Next 
    For lngSht = LBound(strShtOld) To UBound(strShtOld) 
     Set ws = Nothing 
     Set ws = Sheets(strShtOld(lngSht)) 
     If Not ws Is Nothing Then ws.Name = strShtNew(lngSht) 
    Next lngSht 
End Sub 

なぜ一括リネーム、好奇心やあなたは、コードの実行時に関係していることを行うために名前を変更するような大規模な量を持っているのですか?

Array Effort

Sub ArrayEx() 
    Dim varShts 
    Dim varSht 
    Dim strArray() 
    strArray = Array("hep", "hey", "heppa!") 
    Set varShts = Sheets(Array("Sheet1", "Sheet2", "Sheet3")) 
    For varSht = 1 To varShts.Count 
     varShts(varSht).Name = strArray(varSht - 1) 
    Next 
    End Sub 
+0

お楽しみは、「これは完全にオプションですが、あなたがREDIM StrArrayともでき、あなたがwouldnので、それは1ベースの作る – abcde123483

+0

+1を速記しましたループの中から1つを減算する必要があります。 – JimmyPena

0

私はマクロのペアを作成しました:

マクロ1:

Sub Sheetlist() 
Dim x As Integer 

Sheets.Add After:=ActiveSheet 
ActiveSheet.Name = "sheetlist" 
Range("A1").Select 
ActiveCell.FormulaR1C1 = "Sheet List" 
Range("C1").Select 
ActiveCell.FormulaR1C1 = "New List" 
For x = 1 To Worksheets.Count 
Cells(x + 1, 1).Value = Worksheets(x).Name 
Next x 
End Sub 

このマクロはで "sheetlist" と呼ばれ、現在のワークブック内のシートを作成し、現在のブックのすべてのシートのリスト。このシートには、名前を変更したい数のシート名を入力できる「新規リスト」(C1)という列もあります。

これでできることは、名前変更プロセスから除外する列A1の名前を削除することです。列AとCに空白がなく、AとCの名前の数も一致することを確認します。

今、あなたは第二のマクロを実行する準備ができている:

Sub batchrename() 
' 
' batchrename Macro 
' 
Dim OldSheetName As String 
Dim NewSheetName As String 
Dim SheetCount As Integer 
Dim NewSheetList As String 

NewSheetList = InputBox("How many names are there?") + 1 
For SheetCount = 1 To Range("C2:C" & NewSheetList).Count 
OldSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 1) 
NewSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 3) 

Sheets(OldSheetName).Select 
ActiveSheet.Name = NewSheetName 
Next SheetCount 

End Sub 

このマクロはsheetlistのAに記載されている名前に移動し、プロンプトがどこかを尋ねますsheetlist C.に記載されている名前に変更します名前のリストは、C列にある名前の数を入力し、Enterキーを押します。

私は配列代入の完全にわからなかった以外、私がやってしまった何のことだそれ