W tym samouczku VBA opisano, jak zapisać plik za pomocą poleceń Zapisz i Zapisz jako w VBA.
Zapisz skoroszyt - VBA
Polecenie Zapisz VBA zapisuje plik Excela podobnie jak kliknięcie ikony Zapisz lub użycie skrótu Zapisz (CTRL + S).
Zapisz określony skoroszyt
Aby zapisać skoroszyt, odwołaj się do obiektu skoroszytu i użyj polecenia Zapisz.
1 | Skoroszyty("savefile.xlsm").Zapisz |
Zapisz aktywny skoroszyt
Uwaga: Jest to bieżący aktywny skoroszyt z w kodzie VBA, który różni się od ThisWorkbook, który zawiera działający kod.
Zapisz skoroszyt, w którym przechowywany jest kod
Zapisz wszystkie otwarte skoroszyty
Spowoduje to przejście przez wszystkie otwarte skoroszyty, zapisując każdy z nich.
12345 | Dim wb jako skoroszytDla każdego wb In Application.Workbookswb.ZapiszNastępny wb |
Zapisz wszystkie otwarte skoroszyty, które nie zostały otwarte tylko do odczytu
Uwaga: otwarcie skoroszytu w trybie tylko do odczytu uniemożliwia zapisanie pliku.
Aby zapisać plik, musisz użyć opcji Zapisz jako i zapisać plik pod inną nazwą.
1234567 | Dim wb jako skoroszytDla każdego wb In Application.WorkbooksJeśli nie wb Tylko do odczytu, towb.ZapiszZakończ, jeśliNastępny wb |
Zapisz skoroszyt zdefiniowany przez zmienną
Spowoduje to zapisanie skoroszytu, który został przypisany do zmiennej obiektu skoroszytu.
1234 | Dim wb jako skoroszytset wb = skoroszyty("savefile.xlsm")wb.zapisz |
Zapisz skoroszyt zdefiniowany przez zmienną łańcuchową
Spowoduje to zapisanie skoroszytu, którego nazwa została zapisana w zmiennej ciągu.
1234 | Dim wbstring jako ciągwbstring = "zapisz plik.xlsm"skoroszyty(wbstring).save |
Zapisz skoroszyt zdefiniowany na podstawie kolejności, w której został otwarty.
Uwaga: Pierwszy otwarty skoroszyt miałby 1, drugi 2 itd.
Zapisz skoroszyt na podstawie wartości komórki
Spowoduje to zapisanie skoroszytu, którego nazwa znajduje się w wartości komórki.
1234 | Dim wbstring jako ciągwbstring = activeworkbook.sheets("arkusz1").range("wb_save").valueskoroszyty(wbstring).save |
Zapisz jako - VBA
Polecenie VBA Zapisz jako zapisuje plik Excela jako nowy plik, podobnie jak kliknięcie ikony Zapisz jako lub użycie skrótu Zapisz jako (Alt > F > A).
Powyżej zidentyfikowaliśmy wszystkie sposoby określenia skoroszytu do zapisania. Możesz użyć tych samych metod do identyfikowania skoroszytów podczas korzystania z funkcji Zapisz jako.
Zapisz jako działa podobnie do Zapisz, z tą różnicą, że musisz również podać nazwę nowego pliku.
W rzeczywistości funkcja Zapisz jako ma wiele potencjalnych zmiennych do zdefiniowania:
Zapisz jako składnię:
123 | obiekt skoroszytu .SaveAs(FileName, FileFormat, Password, WriteResPassword, _ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, _AddToMru, TextCodepage, TextVisualLayout, Local) |
Pełny opis wszystkich argumentów SaveAs znajduje się poniżej. Na razie skupimy się na najczęstszych przykładach.
Uwaga: Te argumenty można wprowadzić jako ciąg znaków z nawiasami lub jako zdefiniowane zmienne.
Zapisz jako przykłady składni:
Skoroszyt Zapisz jako - ten sam katalog
1 | ActiveWorkbook.SaveAs Filename:= "nowy" |
lub
1 | ActiveWorkbook.SaveAs "nowy" |
lub
1234 | Dim wbstring jako ciągwbstring = "nowy"ActiveWorkbook.SaveAs Nazwa pliku:= wbstring |
Skoroszyt Zapisz jako - nowy katalog
1 | ActiveWorkbook.SaveAs Filename:= "C:\nowy" |
lub
1234 | Dim wbstring jako ciągwbstring = "C:\nowy"ActiveWorkbook.SaveAs Filename:= wbstring= |
Skoroszyt Zapisz jako - nowy katalog, określ rozszerzenie pliku
1 | ActiveWorkbook.SaveAs Filename:= "C:\nowy.xlsx" |
lub
1234 | Dim wbstring jako ciągwbstring = "C:\nowy.xlsx"ActiveWorkbook.SaveAs Nazwa pliku:= wbstring |
Skoroszyt Zapisz jako - Nowy katalog, Określ rozszerzenie pliku - Metoda Alt
Możesz także określić format pliku w jego własnym argumencie.
1234 | .xlsx = 51 '(52 dla komputerów Mac).xlsm = 52 '(53 dla komputerów Mac).xlsb = 50 '(51 dla komputerów Mac).xls = 56 '(57 dla komputerów Mac) |
1 | ActiveWorkbook.SaveAs Nazwa pliku:= "C:\nowy", FileFormat:= 51 |
Skoroszyt Zapisz jako - Dodaj hasło, aby otworzyć plik
1 | ActiveWorkbook.SaveAs Nazwa pliku:= "C:\nowy.xlsx", Hasło:= "hasło" |
Skoroszyt Zapisz jako - Dodaj hasło do uprawnień zapisu
Jeśli nie podano poprawnego hasła, skoroszyt otwiera się jako tylko do odczytu
1 | ActiveWorkbook.SaveAs Filename:= "C:\nowy.xlsx", WriteRes:= "hasło" |
Skoroszyt Zapisz jako - zalecane tylko do odczytu
TRUE, aby wyświetlić okno komunikatu, zalecając otwarcie pliku tylko do odczytu.
1 | ActiveWorkbook.SaveAs Filename:= "C:\nowy.xlsx", ReadOnlyRecommended:= TRUE |
Inne Zapisz jako przykłady
Okno dialogowe Utwórz Zapisz jako
Spowoduje to wygenerowanie okna dialogowego Zapisz jako, monitującego użytkownika o zapisanie pliku.
Pamiętaj, że ten prosty kod może nie być odpowiedni we wszystkich przypadkach.
1 | Application.GetSaveAsFilename |
Okno dialogowe Utwórz Zapisz jako z podaną domyślną nazwą pliku
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Okno dialogowe Utwórz Zapisz jako z podaną domyślną nazwą pliku
1 | Application.GetSaveAsFilename InitialFilename:="test.xlsx" |
Utwórz i zapisz nowy skoroszyt
Spowoduje to utworzenie nowego skoroszytu i natychmiastowe zapisanie go.
123456 | Dim wb jako skoroszytUstaw wb = Skoroszyty.DodajApplication.DisplayAlerts = Falsewb.SaveAs Nazwa pliku:=”c:\Test1.xlsx”Application.DisplayAlerts = Prawda |
Wyłącz alerty zapisu
Podczas pracy z zapisywaniem w VBA możesz napotkać różne ostrzeżenia lub monity dotyczące zapisywania. Aby wyłączyć ostrzeżenia, dodaj ten wiersz kodu:
1 | Application.DisplayAlerts=Fałsz |
i ponownie włączyć alerty:
1 | Application.DisplayAlerts=True |