{"id":1950,"date":"2024-06-26T18:52:50","date_gmt":"2024-06-26T18:52:50","guid":{"rendered":"https:\/\/haimagazine.com\/?p=1950"},"modified":"2025-06-24T13:55:42","modified_gmt":"2025-06-24T11:55:42","slug":"automatyzacja-z-ai-cz-1-tworzenie-skryptow-vba-z-pomoca-chatgpt","status":"publish","type":"post","link":"https:\/\/haimagazine.com\/pl\/narzedzia\/tutoriale-pl\/automatyzacja-z-ai-cz-1-tworzenie-skryptow-vba-z-pomoca-chatgpt\/","title":{"rendered":"Automatyzacja z AI (cz. 1) | Tworzenie skrypt\u00f3w VBA z pomoc\u0105 ChatGPT"},"content":{"rendered":"<p>Technologia rozwija si\u0119 w niesamowitym tempie, a wraz z ni\u0105 ro\u015bnie ilo\u015b\u0107 danych w naszych organizacjach. Co jeszcze znacz\u0105co zwi\u0119kszy\u0142o si\u0119 w ostatnich latach? Liczba nowych obowi\u0105zk\u00f3w wynikaj\u0105cych ze zmian w przepisach. Efekt? Stosy dodatkowej, cz\u0119sto nudnej oraz \u017cmudnej roboty i g\u00f3ry danych do przetworzenia. Poka\u017c\u0119 Wam na przyk\u0142adach, jak mo\u017cemy wykonywa\u0107 te rutynowe i \u017cmudne procesy efektywniej\u2013 odpowiednio je automatyzuj\u0105c. Tak, by\u015bmy mogli po\u015bwi\u0119ci\u0107 wi\u0119cej czasu na ciekawsze zadania, kt\u00f3re przynosz\u0105 konkretn\u0105 warto\u015b\u0107 i satysfakcj\u0119. Tutaj z pomoc\u0105 przychodzi generatywna sztuczna inteligencja, dzi\u0119ki kt\u00f3rej u\u017cywaj\u0105c wy\u0142\u0105cznie j\u0119zyka naturalnego (a wi\u0119c bez konieczno\u015bci programowania) mo\u017cemy mi\u0119dzy innymi tworzy\u0107 skuteczne makra lub znale\u017a\u0107 inspiracj\u0119 do usprawnie\u0144 w innych procesach.<\/p><p><\/p><h3 class=\"wp-block-heading has-text-align-left\"><strong>Zastosowanie AI w ksi\u0119gowo\u015bci <\/strong><\/h3><p>Przyjrzyjmy si\u0119 temu, jak mo\u017cna wykorzysta\u0107 mo\u017cliwo\u015bci <strong><mark style=\"background-color:#82D65E\" class=\"has-inline-color\">ChatGPT<\/mark><\/strong>, w obszarze ksi\u0119gowo\u015bci oraz podatk\u00f3w. Podzielmy cykl pracy z danymi w tych obszarach na cztery sekcje:<\/p><h4 class=\"wp-block-heading\"><strong>1. Gromadzenie danych<\/strong><\/h4><p>Dzi\u0119ki ChatGPT<strong> <\/strong>mo\u017cemy szybciej tworzy\u0107 intuicyjne i czytelne szablony do zbierania wysokiej jako\u015bci danych. Dane mo\u017cemy przyk\u0142adowo pozyskiwa\u0107 poprzez formularze, kwestionariusze, czy czytelne i \u0142atwe do wype\u0142nienia lub zmapowania tabele.<\/p><h4 class=\"wp-block-heading\"><strong>2. Oczyszczanie danych<\/strong> <\/h4><p>W tym kroku skrypty wygenerowane przez AI mog\u0105 pom\u00f3c w usuni\u0119ciu duplikat\u00f3w, uzupe\u0142nianiu brakuj\u0105cych informacji, standaryzacji format\u00f3w czy usuwaniu znak\u00f3w specjalnych, nieakceptowanych przez nasze systemy na dalszych etapach.<\/p><h4 class=\"wp-block-heading\"><strong>3. Przetwarzanie danych<\/strong><\/h4><p>Po zebraniu i oczyszczeniu danych skrypty generowane przez AI mog\u0105 pom\u00f3c nam \u0142\u0105czy\u0107 dane, tworzy\u0107 raporty finansowe, czy dostosowa\u0107 pliki do struktury wymaganej przez nasz system finansowo-ksi\u0119gowy.<\/p><h4 class=\"wp-block-heading\"><strong>4. Weryfikacja<\/strong><\/h4><p>Rosn\u0105ce skomplikowanie przepis\u00f3w powoduje, \u017ce coraz wi\u0119cej transakcji wymaga bardziej rozbudowanych analiz. Skrypty generowane przez AI mog\u0105 pom\u00f3c ksi\u0119gowym, poprzez automatyczne sprawdzanie przekroczenia prog\u00f3w, czy spe\u0142nienia okre\u015blonych warunk\u00f3w. Z pomoc\u0105 skrypt\u00f3w mo\u017cemy otrzymywa\u0107 list\u0119 transakcji wymagaj\u0105cych dalszej pog\u0142\u0119bionej analizy.<\/p><p><\/p><h3 class=\"wp-block-heading has-text-align-left\"><strong>Przyk\u0142ad praktyczny &#8211; wygodne \u0142\u0105czenie danych<\/strong><\/h3><p>Poka\u017cmy na prostym przyk\u0142adzie, jak za pomoc\u0105 ChatGPT mo\u017cemy stworzy\u0107 skrypt w j\u0119zyku Visual Basic for Applications (VBA), kt\u00f3ry po\u0142\u0105czy dane z wielu plik\u00f3w. Zadanie jest nast\u0119puj\u0105ce: <mark style=\"background-color:#82D65E\" class=\"has-inline-color\"><strong>po\u0142\u0105czmy dane z kilkudziesi\u0119ciu plik\u00f3w i tabel w jeden plik<\/strong><\/mark><mark style=\"background-color:#ffffff\" class=\"has-inline-color\"><strong>.<\/strong> <\/mark>Mamy 24 pliki, 48 tabel, tysi\u0105ce wierszy. Spr\u00f3bujmy wsp\u00f3lnie z ChatGPT stworzy\u0107 skrypt w j\u0119zyku Visual Basic for Applications, kt\u00f3ry po\u0142\u0105czy te dane za pomoc\u0105 jednego klikni\u0119cia.<\/p><h4 class=\"wp-block-heading\"><strong>1. Okre\u015blenie potrzeb i za\u0142o\u017ce\u0144<\/strong><\/h4><p>Rozpocznijmy od analizy procesu, kt\u00f3ry chcemy zautomatyzowa\u0107 i okre\u015blmy nasze cele. Opiszmy to jak najdok\u0142adniej.<\/p><ul class=\"wp-block-list\"><li>Po\u0142\u0105czmy wiele plik\u00f3w zapisanych w formacie xlsx zawieraj\u0105cych po 2 zak\u0142adki z danymi w jeden zbiorczy plik do dalszej analizy.<\/li>\n\n<li>Struktura plik\u00f3w wej\u015bciowych jest sta\u0142a\u2013 zawieraj\u0105 one 2 zak\u0142adki z 10-kolumnowymi tabelami. Nag\u0142\u00f3wki tabel znajduj\u0105 si\u0119 w pierwszym wierszu.<\/li><\/ul><figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"399\" data-id=\"2247\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/1.jpg\" alt=\"\" class=\"wp-image-2247\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/1.jpg 853w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/1-300x140.jpg 300w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/1-768x359.jpg 768w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/1-600x281.jpg 600w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><figcaption class=\"wp-element-caption\">1. Struktura plik\u00f3w<\/figcaption><\/figure><\/figure><ul class=\"wp-block-list\"><li>Skorzystajmy z narz\u0119dzi zawartych ju\u017c w pakiecie Microsoft 365.<\/li>\n\n<li>Pliki do po\u0142\u0105czenia znajduj\u0105 si\u0119 w lokalizacji [C:\\Przyk\u0142ady\\1\\Input].<\/li>\n\n<li>Ilo\u015b\u0107 i nazwy plik\u00f3w s\u0105 zmienne.<\/li>\n\n<li>Nazwy zak\u0142adek w plikach s\u0105 sta\u0142e: [VAT naliczony] oraz [VAT nale\u017cny].<\/li>\n\n<li>\u0141\u0105czenie danych b\u0119dzie wykonywane okresowo na zmiennej ilo\u015bci plik\u00f3w.<\/li><\/ul><p>Aby zwi\u0119kszy\u0107 szans\u0119 na otrzymanie ju\u017c w pierwszej odpowiedzi w 100% dzia\u0142aj\u0105cego skryptu, warto pami\u0119ta\u0107 o kilku istotnych rzeczach. Przede wszystkim <strong><mark style=\"background-color:#82D65E\" class=\"has-inline-color\">precyzyjnie okre\u015blamy za\u0142o\u017cenia, struktur\u0119 danych wej\u015bciowych oraz oczekiwany format wyj\u015bciowy.<\/mark><\/strong><\/p><p><\/p><h4 class=\"wp-block-heading\"><strong>2. Tworzenie promptu<\/strong><\/h4><p>Na podstawie zebranych informacji tworzymy prompt, czyli zapytanie do ChatGPT. Doprecyzujmy w nim, \u017ce podczas \u0142\u0105czenia tabel chcemy, aby nazwy nag\u0142\u00f3wk\u00f3w nie by\u0142y duplikowane oraz by program pyta\u0142 u\u017cytkownika, gdzie chce zapisa\u0107 wygenerowany plik. Zapami\u0119tajmy, \u017ce og\u00f3lne i niejednoznaczne okre\u015blenia mog\u0105 prowadzi\u0107 do generowania mniej precyzyjnych odpowiedzi oraz zmniejsza\u0107 szans\u0119 na otrzymanie satysfakcjonuj\u0105cego rezultatu. Oto tre\u015b\u0107 promptu wraz z odpowiedzi\u0105 modelu:<\/p><div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong><code>TRE\u015a\u0106 PROMPTU<br><\/code><\/strong><em><code><br>Chcemy po\u0142\u0105czy\u0107 wiele plik\u00f3w [xlsx] w jeden zbiorczy plik. Wykorzystajmy VBA z pakietu Microsoft 365 . Oto za\u0142o\u017cenia i szczeg\u00f3\u0142y:<br><br>1. Pliki umieszczone s\u0105 w folderze [C:\\Przyk\u0142ady\\1\\Input].<br>2. Liczba plik\u00f3w jest zmienna.<br>3. W ka\u017cdym z plik\u00f3w s\u0105 dwie zak\u0142adki o nazwach [VAT naliczony] oraz [VAT nale\u017cny].<br>4. Liczba kolumn w obu zak\u0142adkach jest sta\u0142a [10 kolumn].<br>5. Nazwy kolumn znajduj\u0105 si\u0119 w wierszu numer 1 w plikach wej\u015bciowych. W pliku wyj\u015bciowym skopiuj nazwy kolumn z pierwszego pliku wej\u015bciowego i umie\u015b\u0107 nazwy kolumn tylko w pierwszym wierszu w obu zak\u0142adkach w pliku wyj\u015bciowym.<br>6. W pliku wyj\u015bciowym chcemy mie\u0107 r\u00f3wnie\u017c dwie oddzielne zak\u0142adki [VAT naliczony] oraz [VAT nale\u017cny]. Ma by\u0107 w niej umieszczona w ka\u017cdym z wierszy nazwa pliku, z kt\u00f3rego dane zosta\u0142y pobrane.<br>7. W jedenastej kolumnie w pliku wyj\u015bciowym dodaj kolumn\u0119 o nazwie [Okres VAT].<br>8. Plik roboczy do \u0142\u0105czenia danych b\u0119dzie u\u017cywany co miesi\u0105c z now\u0105 paczk\u0105 plik\u00f3w.<br>9. Po sko\u0144czeniu tworzenia pliku wyj\u015bciowego pytaj u\u017cytkownika, gdzie zapisa\u0107 dany plik.<\/code><\/em><\/td><\/tr><\/tbody><\/table><\/figure><\/div><\/div><p><\/p><p><\/p><div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\"><div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><code><strong>ODPOWIED\u0179 MODELU<br><br><\/strong><em><br>Aby po\u0142\u0105czy\u0107 wiele plik\u00f3w XLSX w jeden zbiorczy plik przy u\u017cyciu VBA w pakiecie Microsoft 365, musimy stworzy\u0107 makro, kt\u00f3re b\u0119dzie spe\u0142nia\u0107 podane za\u0142o\u017cenia. Poni\u017cej znajduje si\u0119 szczeg\u00f3\u0142owy kod VBA, kt\u00f3ry realizuje ten cel:<br><br>1. Otw\u00f3rz Excel i przejd\u017a do edytora VBA (Alt + F11).<br>2. Przejd\u017a do ThisWorkbook (kliknij dwukrotnie na \"ThisWorkbook\" w \"VBAProject\").<br>3. Wklej poni\u017cszy kod do ThisWorkbook<br><br>Sub PolaczPliki()<br>&nbsp;&nbsp;&nbsp; Dim FolderPath As String<br>&nbsp;&nbsp;&nbsp; Dim outputWorkbook As Workbook<br>&nbsp;&nbsp;&nbsp; Dim inputWorkbook As Workbook<br>&nbsp;&nbsp;&nbsp; Dim outputSheet1 As Worksheet<br>&nbsp;&nbsp;&nbsp; Dim outputSheet2 As Worksheet<br>&nbsp;&nbsp;&nbsp; Dim inputSheet1 As Worksheet<br>&nbsp;&nbsp;&nbsp; Dim inputSheet2 As Worksheet<br>&nbsp;&nbsp;&nbsp; Dim FileName As String<br>&nbsp;&nbsp;&nbsp; Dim LastRow As Long<br>&nbsp;&nbsp;&nbsp; Dim lastRowOut1 As Long<br>&nbsp;&nbsp;&nbsp; Dim lastRowOut2 As Long<br>&nbsp;&nbsp;&nbsp; Dim okresVAT As String<br>&nbsp;&nbsp;&nbsp; Dim SavePath As String<br>&nbsp;&nbsp;&nbsp; Dim i As Integer<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; ' \u015acie\u017cka do folderu z plikami wej\u015bciowymi<br>&nbsp;&nbsp;&nbsp; FolderPath = \"C:\\Przyk\u0142ady\\1\\Input\\\"<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; ' Utworzenie nowego skoroszytu wynikowego<br>&nbsp;&nbsp;&nbsp; Set outputWorkbook = Workbooks.Add<br>&nbsp;&nbsp;&nbsp; Set outputSheet1 = outputWorkbook.Sheets(1)<br>&nbsp;&nbsp;&nbsp; outputSheet1.Name = \"VAT naliczony\"<br>&nbsp;&nbsp;&nbsp; Set outputSheet2 = outputWorkbook.Sheets.Add(After:=outputWorkbook.Sheets(1))<br>&nbsp;&nbsp;&nbsp; outputSheet2.Name = \"VAT nale\u017cny\"<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; ' Pobranie listy plik\u00f3w w folderze<br>&nbsp;&nbsp;&nbsp; FileName = Dir(FolderPath &amp; \"*.xlsx\")<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; ' Inicjalizacja flagi kolumn nag\u0142\u00f3wk\u00f3w<br>&nbsp;&nbsp;&nbsp; Dim headerSet As Boolean<br>&nbsp;&nbsp;&nbsp; headerSet = False<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; ' Przetwarzanie ka\u017cdego pliku<br>&nbsp;&nbsp;&nbsp; Do While FileName &lt;&gt; \"\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set inputWorkbook = Workbooks.Open(FolderPath &amp; FileName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Pobranie zak\u0142adek z pliku wej\u015bciowego<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set inputSheet1 = inputWorkbook.Sheets(\"VAT naliczony\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set inputSheet2 = inputWorkbook.Sheets(\"VAT nale\u017cny\")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Ustawienie nag\u0142\u00f3wk\u00f3w w pliku wyj\u015bciowym (je\u015bli jeszcze nie ustawione)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Not headerSet Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = 1 To 10<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputSheet1.Cells(1, i).Value = inputSheet1.Cells(1, i).Value<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputSheet2.Cells(1, i).Value = inputSheet2.Cells(1, i).Value<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputSheet1.Cells(1, 11).Value = \"Okres VAT\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputSheet2.Cells(1, 11).Value = \"Okres VAT\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; headerSet = True<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Skopiowanie danych z zak\u0142adki \"VAT naliczony\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastRow = inputSheet1.Cells(inputSheet1.Rows.Count, 1).End(xlUp).Row<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lastRowOut1 = outputSheet1.Cells(outputSheet1.Rows.Count, 1).End(xlUp).Row + 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputSheet1.Range(\"A2:J\" &amp; LastRow).Copy Destination:=outputSheet1.Range(\"A\" &amp; lastRowOut1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputSheet1.Range(\"K\" &amp; lastRowOut1 &amp; \":K\" &amp; lastRowOut1 + LastRow - 2).Value = FileName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Skopiowanie danych z zak\u0142adki \"VAT nale\u017cny\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastRow = inputSheet2.Cells(inputSheet2.Rows.Count, 1).End(xlUp).Row<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lastRowOut2 = outputSheet2.Cells(outputSheet2.Rows.Count, 1).End(xlUp).Row + 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputSheet2.Range(\"A2:J\" &amp; LastRow).Copy Destination:=outputSheet2.Range(\"A\" &amp; lastRowOut2)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputSheet2.Range(\"K\" &amp; lastRowOut2 &amp; \":K\" &amp; lastRowOut2 + LastRow - 2).Value = FileName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputWorkbook.Close SaveChanges:=False<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileName = Dir<br>&nbsp;&nbsp;&nbsp; Loop<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; ' Pytanie u\u017cytkownika o miejsce zapisu pliku wynikowego<br>&nbsp;&nbsp;&nbsp; With Application.FileDialog(msoFileDialogSaveAs)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Title = \"Zapisz plik wynikowy\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .FilterIndex = 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If .Show = -1 Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SavePath = .SelectedItems(1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputWorkbook.SaveAs FileName:=SavePath<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br>&nbsp;&nbsp;&nbsp; End With<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; outputWorkbook.Close SaveChanges:=True<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; MsgBox \"Plik zosta\u0142 zapisany jako \" &amp; SavePath<br>&nbsp;&nbsp;<br>End Sub<br><br><br><strong>Wyja\u015bnienie:<\/strong><br><strong>Deklaracja zmiennych:<\/strong> Deklarujemy zmienne potrzebne do przechowywania \u015bcie\u017cek, nazw plik\u00f3w, skoroszyt\u00f3w i arkuszy.<br><strong>Pobieranie \u015bcie\u017cki i nazwy pliku wyj\u015bciowego:<\/strong> U\u017cytkownik jest pytany o lokalizacj\u0119 i nazw\u0119 pliku wyj\u015bciowego.<br><strong>Tworzenie nowego pliku wyj\u015bciowego: <\/strong>Tworzony jest nowy skoroszyt z dwoma arkuszami \"VAT naliczony\" i \"VAT nale\u017cny\".<br><strong>Przetwarzanie plik\u00f3w w folderze:<\/strong> P\u0119tla przechodzi przez wszystkie pliki XLSX w folderze, otwieraj\u0105c je i kopiuj\u0105c odpowiednie dane do pliku wyj\u015bciowego.<br><strong>Kopiowanie nag\u0142\u00f3wk\u00f3w:<\/strong> Nag\u0142\u00f3wki kolumn s\u0105 kopiowane tylko raz, z pierwszego pliku wej\u015bciowego.<br><strong>Kopiowanie danych:<\/strong> Dane s\u0105 kopiowane do odpowiednich arkuszy w pliku wyj\u015bciowym, a nazwa pliku \u017ar\u00f3d\u0142owego jest dodawana do jedenastej kolumny.<br><strong>Zamkni\u0119cie plik\u00f3w i zapisanie pliku wyj\u015bciowego:<\/strong> Plik wyj\u015bciowy jest zapisywany w lokalizacji wybranej przez u\u017cytkownika.<br><br>Upewnij si\u0119, \u017ce masz odpowiednie uprawnienia do odczytu i zapisu plik\u00f3w w okre\u015blonych lokalizacjach oraz \u017ce wszystkie pliki s\u0105 zgodne z za\u0142o\u017ceniami (tj. maj\u0105 odpowiednie arkusze i nag\u0142\u00f3wki).<\/em><\/code><\/td><\/tr><\/tbody><\/table><\/figure><\/div><\/div><\/div><p><\/p><p><\/p><h4 class=\"wp-block-heading\"><strong>3. Weryfikacja<\/strong><\/h4><p>Przed wprowadzeniem pierwszego kodu do skoroszytu Excela, nale\u017cy najpierw doda\u0107 do wst\u0105\u017cki kart\u0119 <mark style=\"background-color:#82D65E\" class=\"has-inline-color\"><strong>Deweloper<\/strong><\/mark>. Aby to zrobi\u0107, nale\u017cy:<\/p><ol class=\"wp-block-list\"><li>Na karcie Plik przej\u015b\u0107 do pozycji Opcje oraz Dostosowywanie Wst\u0105\u017cki.<\/li>\n\n<li>W obszarze Dostosowywanie Wst\u0105\u017cki oraz Karty g\u0142\u00f3wne zaznaczy\u0107 pole wyboru Deweloper.<\/li><\/ol><p><\/p><figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"869\" data-id=\"2001\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Wlaczenie-trybu-dewelopera-1024x869.png\" alt=\"\" class=\"wp-image-2001\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Wlaczenie-trybu-dewelopera-1024x869.png 1024w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Wlaczenie-trybu-dewelopera-300x255.png 300w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Wlaczenie-trybu-dewelopera-768x652.png 768w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Wlaczenie-trybu-dewelopera-600x509.png 600w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Wlaczenie-trybu-dewelopera.png 1174w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">2. Jak w\u0142\u0105czy\u0107 tryb dewelopera<\/figcaption><\/figure><\/figure><p><\/p><p><\/p><p><\/p><p>Po aktywacji zak\u0142adki dewelopera, aby otworzy\u0107 <strong><mark style=\"background-color:#82D65E\" class=\"has-inline-color\">edytor VBA<\/mark><mark style=\"background-color:#ffffff\" class=\"has-inline-color\">,<\/mark><\/strong> wystarczy skorzysta\u0107 ze skr\u00f3tu klawiszowego Alt + F11. Kod wprowadzamy w g\u0142\u00f3wnym oknie edytora.<\/p><p><\/p><p><\/p><p><\/p><figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\"><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"701\" data-id=\"2003\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/image-1024x701.png\" alt=\"\" class=\"wp-image-2003\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/image-1024x701.png 1024w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/image-300x205.png 300w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/image-768x526.png 768w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/image-600x411.png 600w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/image.png 1292w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">3. Menu edytora VBA<\/figcaption><\/figure><\/figure><p><\/p><p><\/p><p><\/p><p>Po wprowadzeniu kodu mo\u017cemy zamkn\u0105\u0107 edytor VBA. By uruchomi\u0107 makro nale\u017cy:<\/p><ol class=\"wp-block-list\"><li>Klikn\u0105\u0107 pozycj\u0119 Deweloper.<\/li>\n\n<li>Klikn\u0105\u0107 pozycj\u0119 Makra<\/li>\n\n<li>Wybra\u0107 odpowiedni\u0105 nazw\u0119 makra i klikn\u0105\u0107 przycisk uruchom.<\/li><\/ol><p><\/p><p><\/p><p><\/p><figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\"><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"805\" height=\"179\" data-id=\"2006\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/8.png\" alt=\"\" class=\"wp-image-2006\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/8.png 805w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/8-300x67.png 300w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/8-768x171.png 768w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/8-600x133.png 600w\" sizes=\"auto, (max-width: 805px) 100vw, 805px\" \/><figcaption class=\"wp-element-caption\">4. Jak uruchomi\u0107 makro<\/figcaption><\/figure><\/figure><p><\/p><p><\/p><p><\/p><p>Po uruchomieniu makra i wskazaniu lokalizacji do zapisania pliku otrzyma\u0142em nast\u0119puj\u0105cy komunikat:<\/p><figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\"><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"345\" height=\"157\" data-id=\"2148\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Zapisanie-pliku-2.png\" alt=\"\" class=\"wp-image-2148\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Zapisanie-pliku-2.png 345w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/Zapisanie-pliku-2-300x137.png 300w\" sizes=\"auto, (max-width: 345px) 100vw, 345px\" \/><figcaption class=\"wp-element-caption\">5. Potwierdzenie zapisania pliku ko\u0144cowego<\/figcaption><\/figure><\/figure><p><\/p><p><\/p><p><\/p><p><\/p><p>Sp\u00f3jrzmy jak wygl\u0105da nasz plik wyj\u015bciowy:<\/p><p><\/p><div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex\"><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"929\" height=\"453\" data-id=\"2250\" src=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/6.jpg\" alt=\"\" class=\"wp-image-2250\" srcset=\"https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/6.jpg 929w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/6-300x146.jpg 300w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/6-768x374.jpg 768w, https:\/\/haimagazine.com\/wp-content\/uploads\/2024\/06\/6-600x293.jpg 600w\" sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><figcaption class=\"wp-element-caption\">6. Struktura pliku ko\u0144cowego<\/figcaption><\/figure><\/figure><\/div><p><\/p><p><\/p><p><\/p><p>Makro zadzia\u0142a\u0142o zgodnie z oczekiwaniami i nie wymaga\u0142o \u017cadnych zmian w kodzie, cho\u0107 nie jest to oczywisto\u015bci\u0105. Czasami wygenerowany przez ChatGPT kod mo\u017ce by\u0107 wadliwy i nie zadzia\u0142a\u0107. W\u00f3wczas nale\u017cy opisa\u0107 b\u0142\u0105d i poprosi\u0107 model o poprawienie b\u0142\u0119du. Zazwyczaj po maksymalnie kilku iteracjach, b\u0142\u0105d zostaje zlokalizowany i naprawiony. Uzyskali\u015bmy plik wyj\u015bciowy z po\u0142\u0105czonymi danymi w dw\u00f3ch zak\u0142adkach dotycz\u0105cych VAT naliczonego oraz VAT nale\u017cnego, z dodatkow\u0105 kolumn\u0105 [Okres VAT]. Szczeg\u00f3\u0142owe opisanie naszych wymaga\u0144 oraz za\u0142o\u017ce\u0144 w promptcie, w tym informacji o \u015bcie\u017ckach, nazwach zak\u0142adek i strukturze plik\u00f3w pozwoli\u0142o uzyska\u0107 dzia\u0142aj\u0105ce makro.<\/p><p><\/p><h4 class=\"wp-block-heading\"><strong>4. Dodawanie kolejnych funkcjonalno\u015bci<\/strong><\/h4><p>Po po\u0142\u0105czeniu plik\u00f3w, mo\u017cemy dodawa\u0107 kolejne elementy automatyzuj\u0105ce proces. Na przyk\u0142ad ChatGPT mo\u017ce stworzy\u0107 skrypt generuj\u0105cy plik z list\u0105 transakcji spe\u0142niaj\u0105cych zadane przez nas kryteria. Om\u00f3wmy to na przyk\u0142adzie transakcji obj\u0119tych mechanizmem podzielonej p\u0142atno\u015bci. Obowi\u0105zek zastosowania tego mechanizmu maj\u0105 podatnicy VAT, kt\u00f3rzy:<\/p><ul class=\"wp-block-list\"><li>Sprzedaj\u0105 lub nabywaj\u0105&nbsp;towary lub us\u0142ugi &#8222;wra\u017cliwe&#8221;, czyli&nbsp;<a href=\"https:\/\/pliki.biznes.gov.pl\/20210810\/pliki\/Co_to_jest_mechanizm_podzielonej_platnosci_(MPP)_i_jak_go_stosowac\/zalacznik-nr-15-ustawy-o-vat.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">towary lub us\u0142ugi wymienione w za\u0142\u0105czniku nr 15 do ustawy o podatku od towar\u00f3w i us\u0142ug<\/a>&nbsp;i jednocze\u015bnie<\/li>\n\n<li>Kwota nale\u017cno\u015bci og\u00f3\u0142em z faktury, czyli warto\u015b\u0107 brutto ca\u0142ej faktury,&nbsp;przekracza 15 tys. z\u0142.<\/li><\/ul><p>Mechanizm podzielonej p\u0142atno\u015bci musi by\u0107, stosowany je\u015bli cho\u0107 jedna z pozycji na fakturze, kt\u00f3rej ca\u0142kowita warto\u015b\u0107 brutto przekracza 15 tys. z\u0142, dotyczy towar\u00f3w lub us\u0142ug wra\u017cliwych. <\/p><p>By otrzyma\u0107 list\u0119 transakcji spe\u0142niaj\u0105cych powy\u017csze warunki, mogliby\u015bmy zdefiniowa\u0107 w promptcie kiedy dana transakcja powinna si\u0119 na niej znale\u017a\u0107. Patrz\u0105c na struktur\u0119 pliku mogliby\u015bmy okre\u015bli\u0107, \u017ce chcemy otrzyma\u0107 pozycje spe\u0142niaj\u0105ce nast\u0119puj\u0105ce warunki dla poszczeg\u00f3lnych wierszy:<\/p><ul class=\"wp-block-list\"><li>W kolumnie G jest warto\u015b\u0107 r\u00f3wna 1 (Transakcja jest oznaczona kodem GTU 02, kt\u00f3ry obejmuje towary wra\u017cliwe).<\/li>\n\n<li>Suma warto\u015bci pozycji w kolumnach od I do J jest wi\u0119ksza od 15 tys. z\u0142.<\/li><\/ul><p>Analogiczne podej\u015bcie mo\u017cemy zastosowa\u0107 do tworzenia skrypt\u00f3w weryfikuj\u0105cych i wyszukuj\u0105cych pozycje spe\u0142niaj\u0105ce inne okre\u015blone przez nas warunki.<\/p><h3 class=\"wp-block-heading has-text-align-left\"><strong>Podsumowanie<\/strong><\/h3><p>Je\u015bli dopiero zaczynasz przygod\u0119 z tworzeniem makr, warto zacz\u0105\u0107 od prostych przyk\u0142ad\u00f3w i stopniowo przechodzi\u0107 do bardziej z\u0142o\u017conych zada\u0144. Mo\u017ce chcesz, aby makro tworzy\u0142o nowy plik z wybranymi zak\u0142adkami i zawiera\u0142o warto\u015bci zamiast formu\u0142? Albo potrzebujesz makra, kt\u00f3re kopiuje dane z jednego pliku do drugiego? A mo\u017ce chcesz automatycznie tworzy\u0107 plik PDF i zapisywa\u0107 go w okre\u015blonym miejscu? Potencja\u0142 generatywnej sztucznej inteligencji w ksi\u0119gowo\u015bci jest ogromny. Jej niesamowit\u0105 zalet\u0105 jest to, \u017ce mo\u017cemy otrzyma\u0107 rozwi\u0105zania idealnie dopasowane do naszych potrzeb. I to wszystko prowadz\u0105c rozmow\u0119 w j\u0119zyku naturalnym, tak jakby\u015bmy o wykonanie zadania prosili bardziej do\u015bwiadczonych koleg\u0119 czy kole\u017cank\u0119, a nie model AI. Co\u015b, co jeszcze niedawno by\u0142o raczej domen\u0105 film\u00f3w science-fiction, dzi\u015b jest na wyci\u0105gni\u0119cie r\u0119ki.<\/p><p><\/p><p><\/p><p><\/p>","protected":false},"excerpt":{"rendered":"<p>Czy ChatGPT zast\u0105pi ksi\u0119gowych? Nie, ale mo\u017ce im u\u0142atwi\u0107 \u017cycie, i to w obszarach, kt\u00f3re dotychczas wymaga\u0142y naprawd\u0119 dobrych relacji z dzia\u0142em IT. Zobacz, jak mo\u017cna wykorzysta\u0107 AI, by tworzy\u0107 makra w Excelu i zaoszcz\u0119dzi\u0107 cenny czas.<\/p>\n","protected":false},"author":16,"featured_media":2151,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_lock_modified_date":false,"footnotes":""},"categories":[763,406],"tags":[83,65,122,75,123],"popular":[],"difficulty-level":[38],"ppma_author":[357],"class_list":["post-1950","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai_praktyka","category-tutoriale-pl","tag-ai","tag-chatgpt","tag-excel","tag-microsoft-365","tag-vba","difficulty-level-medium"],"acf":[],"authors":[{"term_id":357,"user_id":16,"is_guest":0,"slug":"mpezowicz","display_name":"Marcin Pezowicz","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/39181f1c2712633923d1f9b67408c9f6459e89a5fd7106887cc359b52cf8a433?s=96&d=mm&r=g","first_name":"Marcin","last_name":"Pezowicz","user_url":"","job_title":"","description":"BPO Consultant. Z wykszta\u0142cenia ksi\u0119gowy oraz automatyk i robotyk. Specjalizuje si\u0119 w usprawnianiu proces\u00f3w z obszaru ksi\u0119gowo\u015bci i podatk\u00f3w."}],"_links":{"self":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/1950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/comments?post=1950"}],"version-history":[{"count":144,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/1950\/revisions"}],"predecessor-version":[{"id":2798,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/posts\/1950\/revisions\/2798"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/media\/2151"}],"wp:attachment":[{"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/media?parent=1950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/categories?post=1950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/tags?post=1950"},{"taxonomy":"popular","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/popular?post=1950"},{"taxonomy":"difficulty-level","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/difficulty-level?post=1950"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/haimagazine.com\/pl\/wp-json\/wp\/v2\/ppma_author?post=1950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}