Zapisz plik z datą cz. 2 – Więcej plików w jednym dniu

wynik działania makra

Cześć,

poprzednim tutorialu z makrem zapisującym plik *.xlsx z aktualną datą zapowiedziałem Ci, że rozważę sytuację, w której w tym samym dniu zapisywanych jest więcej niż 1 plik. Kod w aktualnej postaci pozwoli na zapisanie tylko jednego pliku, a przy kolejnej próbie pojawi się błąd.

makro zapisz plik z datą

błąd

Obsługa błędów

W takim razie muszę przerobić kod, który już posiadam. Pierwszy błąd, który wywołuje moja procedura pojawia się, kiedy program próbuje utworzyć nowy katalog z aktualną datą we wskazanej lokalizacji. Okazuje się, że taki katalog już istnieje, więc muszę zastosować obsługę błędów w VBA, aby zabezpieczyć to miejsce. Przed linijką wywołującą błąd wpisuję polecenie On Error Resume Next, a pod nią On Error GoTo 0, aby powrócić do standardowej obsługi błędów w VBA.

obsługa błędów

Teraz kiedy uruchamiam makro nie pojawia się błąd związany z folderem, tylko Excel zadaje pytanie, czy nadpisać istniejący już plik o tej samej nazwie? Założyłem, że w jednym dniu zapisuję kilka plików, więc nadpisywanie ich mija się z celem.

nadpisanie pliku

Zastosowanie pętli Do… Loop

Teraz trzeba ustalić w jaki sposób oznaczać kolejne pliki. Chyba najprościej będzie nadawać im kolejne numery w nawiasie na końcu prawidłowej nazwy, tak jak robi to domyślnie Windows. W tym celu muszę zastosować pętlę, która będzie liczyć ile plików aktualnie znajduje się w folderze. Ja zastosuję pętlę Do…Loop, ale zanim zacznę ją pisać zdefiniuję dwie dodatkowe zmienne: plik jako String, oraz i jako Integer.

deklaracja dodatkowych zmiennych

Na początku pętli sprawdzam, czy w folderze z dzisiejszą datą znajduje się już jakiś plik. Do tego celu używam polecenia Dir(KatalogDzis), które zwraca nazwę pierwszego pliku z bieżącego katalogu. Zmienna plik przyjmuje tę nazwę jako wartość.

Następnie wstawiam funkcję If, która sprawdza, czy wartość zmiennej plik jest różna od pustego ciągu znaków („”). Jeśli tak, to uruchamia kolejną pętlę Do… Loop, która wykonuje się dopóki będzie odnajdywać kolejne pliki w folderze z datą.

Wewnątrz tej pętli zmienna plik przyjmuje nową wartość, która jest nazwą kolejnego odnalezionego w folderze pliku, a zmienna i zwiększa swoją wartość o 1. Pętla zatrzymuje się dopiero, gdy nie znajdzie już żadnego pliku. Na koniec zamykam pierwszą pętlę warunkiem dopóki zmienna plik jest równa pustemu ciągowi znaków (Until plik=””).

pętla do loop

Nazywamy nowy plik

Ostatnim etapem jest nadanie nazwy nowego pliku. Tutaj ponownie korzystam z funkcji If, która sprawdza wartość zmiennej i. Jeśli jest ona większa od 0 to znaczy, że dodawany plik musi mieć przypisany kolejny numer.

zapisywanie pliku

Z makrem w takiej postaci możesz zapisywać dowolną liczbę plików w jednym folderze.

Jeśli wolisz instrukcję w postaci filmu to zapraszam do oglądania poniżej.

Spodobał Ci się artykuł ? Udostępnij go znajomym.

Share on facebook
Share on linkedin
Share on twitter

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *