Deze zelfstudie laat zien hoe u de naam van de werkmap in VBA kunt krijgen en instellen.
We kunnen de naam van de actieve werkmap in VBA ophalen of instellen, of alle geopende werkmappen in Excel doorlopen en de naam van elk van hen ophalen of instellen met behulp van een VBA-lus.
Werkmapnaam ophalen
Om de naam van de actieve werkmap te krijgen, moeten we de eigenschap name van het werkmapobject gebruiken.
12345 | Sub GetWorkbookName()Dim strWBName As StringstrWBName = ActiveWorkbook.NameMsgBox strWBNaamEinde sub |
Als we de bovenstaande code zouden uitvoeren, zouden we een berichtvenster op het scherm zien verschijnen met de naam van de actieve werkmap.
Om alle actieve werkmappen te doorlopen en de namen van de werkmappen terug te sturen naar Excel, kunnen we de volgende code uitvoeren:
1234567 | Sub GetWorkbookNames()Dim wb als werkboekVoor elke wb In WerkmappenActiveCell = wb.NaamActiveCell.Offset(1, 0).SelecterenVolgendeEinde sub |
De bovenstaande voorbeelden bevatten de extensie van het bestand (bijv. xlsx). Als u de extensie niet wilt opnemen, zijn er een paar methoden die we kunnen gebruiken om alleen de bestandsnaam van de werkmap te verkrijgen.
Werkmapnaam ophalen zonder extensie
We kunnen de LEFT- en INSTR-functies gebruiken om tekens na de punt in de bestandsnaam te verwijderen:
12345 | Sub GetWorkbookName()Dim strWBName As StringstrWBName = Left(ActieveWerkboek.Naam, InStr(ActieveWerkboek.Naam, ".") - 1)MsgBox strWBNaamEinde sub |
We kunnen de functies LEFT en LEN gebruiken om 5 tekens aan het einde van de bestandsnaam te verwijderen:
12345 | Sub GetWorkbookName()Dim strWBName As StringstrWBName = Left(ActieveWerkboek.Naam, Len(ActieveWerkboek.Naam) - 55)MsgBox strWBNaamEinde sub |
De naam van de werkmap instellen
Om de naam van een werkmap in VBA in te stellen, gebruiken we nog steeds de eigenschap Name van de werkmap, maar we kunnen deze methode niet gebruiken om de naam van de actieve werkmap te wijzigen. Dit komt doordat de actieve werkmap is geopend en er een bestandstoegangsfout optreedt. Om dit te verhelpen, kunnen we het bestand opslaan met een nieuwe naam en vervolgens het oude bestand verwijderen.
12345678910 | Public Sub SetWorkbookName()Dim strPath As StringDim strNieuweNaam As StringDim strOldName As StringstrOldName = ActiveWorkbook.NamestrNewName = InputBox ("Voer een nieuwe naam in voor de werkmap")strPath = ActiveWorkbook.PathActiveWorkbook.SaveAs strPath & "/" & strNewNameDood strPath & "/" & strOldNameEinde sub |
Om de naam van een werkmap die niet is geopend te wijzigen, kunnen we de methode Naam gebruiken.
123 | Public Sub RenameWorkbook()Naam "C:\Data\MijnBestand.xlsx" Als "C:\Data\MijnNieuweBestand.xlsx"Einde sub |