Denna handledning visar hur du får och anger arbetsbokens namn i VBA.
Vi kan hämta eller ställa in namnet på den aktiva arbetsboken i VBA eller bläddra igenom alla öppna arbetsböcker i Excel och få eller ange namnet på var och en av dem med hjälp av en VBA -loop.
Hämta arbetsbokens namn
För att få namnet på den aktiva arbetsboken måste vi använda egenskapen namn för arbetsboksobjektet.
12345 | Sub GetWorkbookName ()Dim strWBName Som strängstrWBName = ActiveWorkbook.NameMsgBox strWBNameAvsluta Sub |
Om vi skulle köra koden ovan skulle vi se en meddelanderuta visas på skärmen med namnet på den aktiva arbetsboken.
För att gå igenom alla aktiva arbetsböcker och returnera arbetsböckernas namn till Excel kan vi köra följande kod:
1234567 | Sub GetWorkbookNames ()Dim wb Som arbetsbokFör varje wb i arbetsböckerActiveCell = wb.NameActiveCell.Offset (1, 0) .VäljNästaAvsluta Sub |
Exemplen ovan inkluderar filtillägget (t.ex. xlsx). Om du inte vill inkludera tillägget finns det några metoder vi kan använda för att bara få filnamnet på arbetsboken.
Skaffa arbetsbokens namn utan tillägg
Vi kan använda funktionerna VÄNSTER och INSTR för att ta bort alla tecken efter perioden i filnamnet:
12345 | Sub GetWorkbookName ()Dim strWBName Som strängstrWBName = Vänster (ActiveWorkbook.Name, InStr (ActiveWorkbook.Name, ".") - 1)MsgBox strWBNameAvsluta Sub |
Vi kan använda funktionerna VÄNSTER och LEN för att ta bort fem tecken från slutet av filnamnet:
12345 | Sub GetWorkbookName ()Dim strWBName Som strängstrWBName = Vänster (ActiveWorkbook.Name, Len (ActiveWorkbook.Name) - 55)MsgBox strWBNameAvsluta Sub |
Ange arbetsbokens namn
För att ange namnet på en arbetsbok i VBA använder vi fortfarande egenskapen Namn på arbetsboken, men vi kan inte använda den här metoden för att ändra namnet på den aktiva arbetsboken. Detta beror på att den aktiva arbetsboken är öppen och ett filåtkomstfel uppstår. För att övervinna detta kan vi spara filen med ett nytt namn och sedan radera den gamla filen.
12345678910 | Public Sub SetWorkbookName ()Dim strPath Som strängDim strNewName Som strängDim strOldName Som strängstrOldName = ActiveWorkbook.NamestrNewName = InputBox ("Vänligen ange nytt namn för arbetsbok")strPath = ActiveWorkbook.PathActiveWorkbook.SaveAs strPath & "/" & strNewNameDöda strPath & "/" & strOldNameAvsluta Sub |
För att byta namn på en arbetsbok som inte är öppen kan vi använda metoden Namn.
123 | Public Sub RenameWorkbook ()Namn "C: \ Data \ MyFile.xlsx" Som "C: \ Data \ MyNewFile.xlsx"Avsluta Sub |