Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 1

Witam,
Potrzebuję pomocy w sprawie stworzenia makra, które na podstawie jednego pliku excel stworzy kilka(naście) innych plików, tzn. bazując na szablonie zmieni jedną lub dwie dane w środku i zapisze pod nową nazwą w określonej ścieżce. Wszystkie te dane był by wskazane w pliku. Niestety nie wiem jak się do tego zabrać a pętle nie są moją najmocniejszą stroną:( Czy jest w ogóle możliwość zrobienia tak skomplikowanego kodu? Będę wdzięczna za pomoc.

Załączniki

  • xlsm

    MAKRO.xlsm ( 19K )
Katarzyna_Gurazda
  • Zapytał
  • @ Katarzyna_Gurazda | 15.12.2020
    • 0
    • 0
    • 0
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

 W Twoim zadaniu nie ma niczego skomplikowanego, to podstawy VBA :) Poniższy kod zapisuje szablon pod wskazanymi nazwami w wybranych katalogach, trzeba tylko dodać fragment podstawiający dane z kolumn "zmienne".

Sub zapisz_pliki()
Dim rng, r As Long, sciezka As String

'przepisujemy matrycę nazw do zmiennej
rng = ThisWorkbook.Sheets("Sheet1").Range("B5:E7").Value

'opcjonalnie usuwamy arkusz z matrycą, jeżeli nie jest potrzebny w docelowych plikach
'Application.DisplayAlerts = False
'ThisWorkbook.Sheets("Sheet1").Delete
'Application.DisplayAlerts = True

'przechodzę przez wszystkie komórki z nazwami plików
For r = 1 To UBound(rng)
   'przepisuję ścieżkę z trzeciej kolumny w prawo
   sciezka = rng(r, 4)
   'sprawdzam, czy ścieżka kończy się znakiem "\" i ewentualnie go dopisuję
   If Right(sciezka, 1) <> "\" Then sciezka = sciezka & "\"
   'sprawdzam, czy istnieje potrzebny katalog
   If Dir(sciezka) = "" Then MkDir sciezka
   
   'tutaj potrzebny kod podstawiający zmienne dane
   
   'zapisuję plik w formacie xlsm (https://docs.microsoft.com/en-us/office/vba/api/excel.xlfileformat)
   'opcjonalnie można wyłączyć alerty przy nadpisywaniu plików
   'Application.DisplayAlerts = False
   ThisWorkbook.SaveAs sciezka & rng(r, 1), FileFormat:=52
   'Application.DisplayAlerts = True
Next

End Sub

Jest jedna istotna rzecz, o której trzeba zawsze pamiętać przy tworzeniu takiego kodu: jeżeli uruchomisz go z pliku MAKRO.xlsm, to po jego wykonaniu znajdziesz się w MK05.xlsm. Sam często łapałem się na tym, że po przejściu makra na gorąco wprowadzałem jakieś poprawki, zapisywałem zmiany i zamykałem plik (przegapiając fakt, że jestem w tym wynikowym), odpalałem szablon (w których rzeczonych zmian oczywiście nie było) i nadpisywałem plik, w którym te modyfikacje zrobiłem... Bardzo łatwo o pomyłkę :)

 

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 19.12.2020
    • 1
    • 7
    • 1