2017-09-25 52 views
0

尋求支持以編輯以下代碼的方式重命名與文件夾(循環)中的工作簿名稱相似的所有工作表(excel)。如果工作簿中有一個以上的表,然後將其重命名爲workbookname(1),workbookname(2)等將所有工作表名稱重命名爲文件夾中的工作簿名稱

Sub EditSheetName() 
Dim NewName 
NewName = Replace(ActiveWorkbook. Name, ".xl*", "") 
ActiveSheet.Select 
ActiveSheet.Name = NewName 
End Sub 

回答

0

也許只是一個簡單的循環: 我還沒有想出如何更換「的.xlsx」使用通配符,我會以爲這將是要麼「.XLSM」或「的.xlsx」,你可以在代碼

Sub LoopThroughFolder() 

    Dim MyFile As String, Str As String, MyDir As String, Wb As Workbook 
    Dim sh As Worksheet 
    Dim s As String, n As String 



    Set Wb = ThisWorkbook 
    'change the address to suite 
    MyDir = "C:\Users\dmorrison\Downloads\TestFolderLoop\" 
    MyFile = Dir(MyDir & "*.xls*") 'change file extension 
    ChDir MyDir 
    Application.ScreenUpdating = 0 
    Application.DisplayAlerts = 0 

    Do While MyFile <> "" 
     Workbooks.Open (MyFile) 
     s = ActiveWorkbook.Name 
     n = Replace(s, ".xls", "") 'change the file extension 
     i = 1 
     For Each sh In Sheets 
      sh.Name = n & "(" & i & ")" 
      i = i + 1 
     Next sh 
     ActiveWorkbook.Close True 

     MyFile = Dir() 
    Loop 



End Sub 
+0

它適用於工作簿。你也可以將這段代碼轉換成一個循環,以便它可以在一個文件夾內的所有excel文件上執行相同的宏。 – mechee69

0

對於多張改變他們,你會想一個if語句:

Dim s As String, i as Integer 
If Sheets.Count=1 Then 
    s = Replace(ActiveWorkbook.Name,".xlsx","") 
    ActiveSheet.Name = s   
Else 
    For i = 1 to Sheets.Count 
     s = Replace(ActiveWorkbook.Name,".xlsx","") 
     Sheets(i).Name = s & "(" & i & ")" 
    Next i 
End If 

我h以這種方式這樣(#)只顯示多個。如果你不在意,你只需要Else部分的循環。

+0

@ mechee69關於通過文件循環,看看https://stackoverflow.com/questions/26824225/loop-through-folder-renaming-files-that-meet-specific-criteria-using-vba。這個鏈接講述了使用Collection並且是文件循環部分開始的好地方。 – Cyril

相關問題