VBA — jak zapisać plik Excela?

Jak zapisać skoroszyt z VBA oraz czym różnią się Save i SaveAs. Gotowy kod i najważniejsze pułapki przy formatach plików.

Najkrócej:

Jeżeli chcesz zapisać bieżące zmiany w tym samym pliku, wystarczy metoda Save na właściwym obiekcie Workbook.

Gotowy kod

Skopiuj makro

VBA
Sub ZapiszPlik()
    If ThisWorkbook.Path = "" Then
        MsgBox "Najpierw zapisz skoroszyt ręcznie pod wybraną nazwą."
        Exit Sub
    End If

    ThisWorkbook.Save

    MsgBox "Plik zapisany."
End Sub
Dostosowanie

Co zmienić w kodzie?

01

ThisWorkbook zapisuje skoroszyt zawierający kod VBA, a niekoniecznie aktualnie aktywny plik.

02

Jeśli potrzebujesz nowej nazwy lub lokalizacji, użyj SaveAs.

03

Przy SaveAs dobierz rozszerzenie i FileFormat do tego, czy plik ma zachować makra.

Wyjaśnienie

Jak działa ten kod?

Path jest pusty dla nowego skoroszytu, który nigdy nie został zapisany.

Save zapisuje zmiany w istniejącej lokalizacji bez wyświetlania okna dialogowego.

Jawne wskazanie ThisWorkbook ogranicza ryzyko zapisania nie tego pliku.

Uważaj na

Najczęstsze błędy

Nie zapisuj skoroszytu z makrami jako .xlsx, jeśli chcesz zachować kod VBA.

ActiveWorkbook może być innym plikiem niż ten, w którym działa makro.

Przy automatycznym SaveAs testuj, czy plik docelowy już istnieje i czy może zostać nadpisany.