In diesem Tutorial wird gezeigt, wie Sie den Arbeitsmappennamen in VBA abrufen und festlegen.
Wir können den Namen der aktiven Arbeitsmappe in VBA abrufen oder festlegen oder alle geöffneten Arbeitsmappen in Excel durchlaufen und den Namen jeder einzelnen mit einer VBA-Schleife abrufen oder festlegen.
Arbeitsmappennamen abrufen
Um den Namen der aktiven Arbeitsmappe zu erhalten, müssen wir die name-Eigenschaft des workbooks-Objekts verwenden.
12345 | Unter GetWorkbookName()Dim strWBName als StringstrWBName = ActiveWorkbook.NameMsgBox strWBNameEnd Sub |
Wenn wir den obigen Code ausführen, wird auf dem Bildschirm ein Meldungsfeld mit dem Namen der aktiven Arbeitsmappe angezeigt.
Um alle aktiven Arbeitsmappen zu durchlaufen und die Namen der Arbeitsmappen an Excel zurückzugeben, können wir den folgenden Code ausführen:
1234567 | Unter GetWorkbookNames()Dim wb als ArbeitsmappeFür jedes wb in ArbeitsmappenActiveCell = wb.NameActiveCell.Offset(1, 0).WählenNächsteEnd Sub |
Die obigen Beispiele enthalten die Erweiterung der Datei (zB xlsx). Wenn Sie die Erweiterung nicht einschließen möchten, gibt es einige Methoden, die wir verwenden können, um nur den Dateinamen der Arbeitsmappe zu erhalten.
Arbeitsmappennamen ohne Erweiterung abrufen
Wir können die Funktionen LEFT und INSTR verwenden, um alle Zeichen nach dem Punkt im Dateinamen zu entfernen:
12345 | Unter GetWorkbookName()Dim strWBName als StringstrWBName = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)MsgBox strWBNameEnd Sub |
Wir können die Funktionen LEFT und LEN verwenden, um 5 Zeichen vom Ende des Dateinamens zu entfernen:
12345 | Unter GetWorkbookName()Dim strWBName als StringstrWBName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 55)MsgBox strWBNameEnd Sub |
Festlegen des Arbeitsmappennamens
Um den Namen einer Arbeitsmappe in VBA festzulegen, verwenden wir weiterhin die Name-Eigenschaft der Arbeitsmappe, können diese Methode jedoch nicht verwenden, um den Namen der aktiven Arbeitsmappe zu ändern. Dies liegt daran, dass die aktive Arbeitsmappe geöffnet ist und ein Dateizugriffsfehler auftritt. Um dies zu umgehen, können wir die Datei unter einem neuen Namen speichern und dann die alte Datei löschen.
12345678910 | Öffentliches UntersetWorkbookName()Dim strPath As StringDim strNewName als StringDim strOldName As StringstrOldName = ActiveWorkbook.NamestrNewName = InputBox("Bitte neuen Namen für Arbeitsmappe eingeben")strPath = ActiveWorkbook.PathActiveWorkbook.SaveAs strPath & "/" & strNewNameKill strPath & "/" & strOldNameEnd Sub |
Um eine nicht geöffnete Arbeitsmappe umzubenennen, können wir die Name-Methode verwenden.
123 | Öffentliche Sub RenameWorkbook()Name "C:\Data\MyFile.xlsx" Als "C:\Data\MyNewFile.xlsx"End Sub |