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.
Jeżeli chcesz zapisać bieżące zmiany w tym samym pliku, wystarczy metoda Save na właściwym obiekcie Workbook.
Skopiuj makro
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 SubCo zmienić w kodzie?
ThisWorkbook zapisuje skoroszyt zawierający kod VBA, a niekoniecznie aktualnie aktywny plik.
Jeśli potrzebujesz nowej nazwy lub lokalizacji, użyj SaveAs.
Przy SaveAs dobierz rozszerzenie i FileFormat do tego, czy plik ma zachować makra.
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.
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.