Ten samouczek pokaże, jak uzyskać i ustawić nazwę skoroszytu w VBA.
Możemy uzyskać lub ustawić nazwę aktywnego skoroszytu w VBA lub przejść przez wszystkie otwarte skoroszyty w programie Excel i uzyskać lub ustawić nazwę każdego z nich za pomocą pętli VBA.
Pobierz nazwę skoroszytu
Aby uzyskać nazwę aktywnego skoroszytu, musimy użyć właściwości name obiektu workbooks.
12345 | Sub GetWorkbookName()Dim strWBName As StringstrWBName = ActiveWorkbook.NameMsgBox nazwa strWBNapis końcowy |
Gdybyśmy mieli uruchomić powyższy kod, na ekranie pojawiłoby się okno komunikatu z nazwą aktywnego skoroszytu.
Aby przejść przez wszystkie aktywne skoroszyty i zwrócić nazwy skoroszytów do programu Excel, możemy uruchomić następujący kod:
1234567 | Sub GetWorkbookNames()Dim wb jako skoroszytDla każdego wb w skoroszytachAktywna Komórka = wb.NazwaActiveCell.Offset(1, 0).WybierzNastępnyNapis końcowy |
Powyższe przykłady będą zawierać rozszerzenie pliku (np. xlsx). Jeśli nie chcesz dołączać rozszerzenia, istnieje kilka metod, których możemy użyć, aby uzyskać tylko nazwę pliku skoroszytu.
Uzyskaj nazwę skoroszytu bez rozszerzenia
Możemy użyć funkcji LEWO i INSTR, aby usunąć dowolne znaki po kropce w nazwie pliku:
12345 | Sub GetWorkbookName()Dim strWBName As StringstrWBName = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)MsgBox nazwa strWBNapis końcowy |
Możemy użyć funkcji LEWO i LEN, aby usunąć 5 znaków z końca nazwy pliku:
12345 | Sub GetWorkbookName()Dim strWBName As StringstrWBName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 55)MsgBox nazwa strWBNapis końcowy |
Ustawianie nazwy skoroszytu
Aby ustawić nazwę skoroszytu w VBA, nadal używamy właściwości Name skoroszytu, jednak nie możemy użyć tej metody do zmiany nazwy aktywnego skoroszytu. Wynika to z faktu, że skoroszyt aktywny jest otwarty i wystąpi błąd dostępu do pliku. Aby temu zaradzić, możemy zapisać plik pod nową nazwą, a następnie usunąć stary plik.
12345678910 | Public Sub SetWorkbookName()Dim strPath As StringDim strNewName jako ciągDim strOldName jako ciągstrOldName = ActiveWorkbook.NamestrNewName = InputBox("Wprowadź nową nazwę skoroszytu")strPath = AktywnyKsiążka.ŚcieżkaActiveWorkbook.SaveAs strPath & "/" & strNewNameZabij strPath & "/" i strOldNameNapis końcowy |
Aby zmienić nazwę skoroszytu, który nie jest otwarty, możemy użyć metody Name.
123 | Public Sub Zmień nazwę Skoroszytu()Nazwij „C:\Dane\MójPlik.xlsx” jako „C:\Dane\MójNowyPlik.xlsx”Napis końcowy |