Denne opplæringen vil demonstrere hvordan du får og angir arbeidsboknavnet i VBA.
Vi kan få eller angi navnet på den aktive arbeidsboken i VBA, eller bla gjennom alle de åpne arbeidsbøkene i Excel, og få eller angi navnet på hver av dem ved hjelp av en VBA -løkke.
Få navn på arbeidsbok
For å få navnet på den aktive arbeidsboken, må vi bruke navnetegenskapen til arbeidsbokobjektet.
12345 | Sub GetWorkbookName ()Dim strWBName Som strengstrWBName = ActiveWorkbook.NameMsgBox strWBNameSlutt Sub |
Hvis vi skulle kjøre koden ovenfor, ville vi se en meldingsboks vises på skjermen med navnet på den aktive arbeidsboken.
For å gå gjennom alle de aktive arbeidsbøkene og returnere navnene på arbeidsbøkene til Excel, kan vi kjøre følgende kode:
1234567 | Sub GetWorkbookNames ()Dim wb Som arbeidsbokFor hver wb i arbeidsbøkerActiveCell = wb.NameActiveCell.Offset (1, 0) .VelgNesteSlutt Sub |
Eksemplene ovenfor vil inkludere filtypen (f.eks. Xlsx). Hvis du ikke vil inkludere utvidelsen, er det noen få metoder vi kan bruke for å skaffe bare filnavnet til arbeidsboken.
Få navn på arbeidsbok uten utvidelse
Vi kan bruke funksjonene VENSTRE og INSTR for å fjerne tegn etter perioden i filnavnet:
12345 | Sub GetWorkbookName ()Dim strWBName Som strengstrWBName = Venstre (ActiveWorkbook.Name, InStr (ActiveWorkbook.Name, ".") - 1)MsgBox strWBNameSlutt Sub |
Vi kan bruke LEFT og LEN -funksjonene til å fjerne 5 tegn fra slutten av filnavnet:
12345 | Sub GetWorkbookName ()Dim strWBName Som strengstrWBName = Venstre (ActiveWorkbook.Name, Len (ActiveWorkbook.Name) - 55)MsgBox strWBNameSlutt Sub |
Angi navn på arbeidsbok
For å angi navnet på en arbeidsbok i VBA bruker vi fremdeles navnegenskapen til arbeidsboken, men vi kan ikke bruke denne metoden til å endre navnet på den aktive arbeidsboken. Dette skyldes det faktum at den aktive arbeidsboken er åpen, og det vil oppstå en filtilgangsfeil. For å overvinne dette kan vi lagre filen med et nytt navn og deretter slette den gamle filen.
12345678910 | Public Sub SetWorkbookName ()Dim strPath As StringDim strNewName As StringDim strOldName Som strengstrOldName = ActiveWorkbook.NamestrNewName = InputBox ("Skriv inn nytt navn for arbeidsbok")strPath = ActiveWorkbook.PathActiveWorkbook.SaveAs strPath & "/" & strNewNameDrep strPath & "/" & strOldNameSlutt Sub |
For å gi nytt navn til en arbeidsbok som ikke er åpen, kan vi bruke metoden Navn.
123 | Public Sub RenameWorkbook ()Navn "C: \ Data \ MyFile.xlsx" Som "C: \ Data \ MyNewFile.xlsx"Slutt Sub |