Narzędzia
Narzędzie do automatyzacji transmisji danych z plików tekstowych

 

Moduł czyta dane z plików tekstowych i zapisuje do wybranego przez użytkownika arkusza.

Istnieje możliwość odczytu danych z dwóch struktur:

 

- dane zapisywane na określonych znakach w pliku tekstowym (zob. Rysunek nr 1),
 
Dane w pliku tekstowym
Rysunek nr 1. Dane zapisane w pliku tekstowym (aby powiększyć rysunek kliknij w jego obszarze)

- dane oddzielone separatorem w pliku tekstowym (zob. Rysunek nr 2).

Dane w pliku tekstowym.
Rysunek nr 2. Dane zapisane w pliku tekstowym (dane oddzielane separatorem)
 
 
Przykład:
 
Odczyt danych z pliku tekstowego do arkusza

Moduł oprócz odczytu danych z pliku tekstowego (zob. Rysunek nr 1) i ich rejestracji do arkusza pozwala na wprowadzenie wzorów do poszczególnych kolumn rejestru w arkuszu, które dokonują żądanych wyliczeń.

Należy zwrócić uwagę, że plik tekstowy zawiera wiersze, z których dane nie powinny być przepisywane do arkusza. Są to wiersze nagłówkowe i wiersze z tytułem. Tylko dane z wierszy użytkowych (to znaczy tych, w których są dane przeznaczone do przetworzenia) powinny zostać przepisane do wybranego przez użytkownika arkusza. Aby wskazać wiersze użytkowe, użytkownik powinien wypełnić część arkusza z parametrami (zob. Rysunek nr 3).
Arkusz "Parametry"
Rysunek nr 3. Arkusz Parametry. Parametry służące do określenia wierszy użytkowych z odczytywanego pliku


W komórce P24 użytkownik definiuje, ile wierszy użytkowych pliku tekstowego składa się na jedną pozycję przepisywaną do arkusza, czyli tworzącą jeden rekord (wiersz użytkowy) w arkuszu. Tak sformatowane pliki tekstowe o informacjach tworzących jeden rekord, a rozmieszczonych w kilku wierszach, można uzyskać na przykład z systemu SAP.

Zawartość komórki P24 równa 2 oznacza, że 2 wiersze użytkowe pliku tekstowego składają się na jedną pozycję (rekord, wiersz użytkowy) przepisywaną do arkusza. Do komórek w poszczególnych wierszach kolumn K, L, M i N wprowadzane są dane, za pomocą których moduł identyfikuje, czy dany wiersz pliku tekstowego jest wierszem użytkowym. Do komórek kolumny K wprowadzane są numery wierszy użytkowych (w opisywanym przykładzie 1 lub 2, ponieważ 2 wiersze użytkowe w pliku tekstowym tworzą jedną pozycję zapisywaną w arkuszu). Komórki kolumny L zawierają numer pozycji na jakiej w wierszu pliku tekstowego występują znaki zdefiniowane przez użytkownika w komórkach kolumn M i N. Znaki te dobiera użytkownik tak, aby stanowiły cechę identyfikującą wiersz użytkowy.

I tak, w komórkach zakresu K25:N25 znajdują się dane: 1 2 0 i 9, gdzie 1 oznacza numer wiersza użytkowego w pliku tekstowym, 2 numer pozycji znaku w wierszu pliku tekstowego, 0 dopuszczalną wartość początkową znaku (w tym przypadku są to cyfry, natomiast mogą to być dowolne znaki, na przykład litery), 9 dopuszczalną wartość końcową znaku.
Tymczasem do komórek zakresu K26:N26 wprowadzono dane: 1 65 . (znak kropki) i . (znak kropki), gdzie 1 oznacza numer wiersza użytkowego w pliku tekstowym, 65 numer pozycji znaku w wierszu pliku tekstowego, znak kropki dopuszczalną wartość początkową znaku, drugi znak kropki dopuszczalną wartość końcową znaku.

Oznacza to, że wiersz w pliku tekstowym będzie identyfikowany przez moduł jako pierwszy wiersz użytkowy,
jeżeli na drugiej pozycji tego wiersza będzie cyfra (znak z zakresu od 0 do 9)
oraz
jeżeli na 65 pozycji tego wiersza będzie kropka.

Pierwszy wiersz z danymi, który jest identyfikowany przez moduł jako pierwszy wiersz użytkowy, jest następujący:




Na drugiej pozycji w powyższym wierszu występuje znak z zakresu od 0 do 9 (pierwsza cyfra numeru konta). Oprócz tego znak kropki, oddzielający część całkowitą od ułamkowej w liczbie 274,029.34, znajduje się na 65 znaku. Znak cyfry na drugim znaku i kropki na 65 są to stałe cechy identyfikujące każdy z pierwszych (z dwóch możliwych w tym przykładzie) wierszy użytkowych w pliku tekstowym (zob. Rysunek nr 1). Oznacza to, że ten wiersz z danymi będzie traktowany jako użytkowy, ponieważ zostały spełnione wszystkie warunki określone parametrami.

Tą samą technikę zastosowano w przypadku opisu charakterystycznych cech drugiego z wierszy użytkowych, składających się na jeden rekord pobierany do arkusza. I tak, w komórkach zakresu K27:N27 znajdują się dane: 2 90 . (znak kropki) i . (znak kropki), a w komórkach zakresu K28:N28 dane: 2 115 . (znak kropki) i . (znak kropki).
Tym samym każdy wiersz, w którym na 90 i 115 pozycji występuje znak kropki będzie identyfikowany jako drugi wiersz użytkowy pliku tekstowego, składający się na jeden rekord zapisywany w arkuszu. Pierwszy wiersz z danymi, który jest rozpoznawany przez moduł jako drugi wiersz użytkowy, jest następujący:



Pierwszy znak kropki oddzielający część całkowitą od ułamkowej występuje w liczbie 0.00 na 90 pozycji, a drugi w liczbie 274,029.34 na 115. To znaczy, że wiersz ten zostanie potraktowany jako drugi wiersz użytkowy, ponieważ zostały spełnione wszystkie warunki określone parametrami.

Dane z wszystkich wierszy, identyfikowanych przez moduł jako użytkowe, czyli te spełniające wszystkie cechy określone parametrami, są przepisywane do arkusza. Dane z pozostałych wierszy, tych nie spełniających warunków, są pomijane.

W arkuszu z parametrami umieszczono ponadto informacje(zob. Rysunek nr 4):
- w komórce B10 - nazwa pliku tekstowego (łącznie ze ścieżką dostępu), w analizowanym przykładzie: C:\4TG\obroty02.txt (dysk: C, folder: 4TG, plik: obroty02.txt),
- w komórce B15 - nazwa arkusza w skoroszycie, w którym wykorzystywany jest moduł, a do którego zostaną przepisane informacje z pliku tekstowego, w tym przykładzie jest to arkusz Dane,
- w komórce B17 - początkowy numer wiersza, do którego będą wprowadzane dane odczytane z pliku tekstowego.
 
 Arkusz 'Parametry'
Rysunek nr 4. Arkusz Parametry. Parametry służące do określenia sposobu transmisji danych z wierszy użytkowych.


Strukturę zapisu danych pobranych z pliku tekstowego do excela zdefiniowano w arkuszu Parametry w kolumnach: D, E, F, G i H (zob. Rysunek nr 4). W kolejnych pozycjach wprowadzane są informacje - parametry sterujące sposobem odczytu danych z pliku tekstowego i zapisaniem tych danych w określonym miejscu w arkuszu. W kolumnie D umieszczono numer wiersza użytkowego pliku tekstowego (w opisywanym przykładzie jednego z dwóch), w kolumnie E numer znaku w wierszu użytkowym pliku tekstowego, od którego fragment tekstu będzie przenoszony do arkusza, w kolumnie F określono typ danych (T dla danych tekstowych, L dla danych liczbowych, D dla dat), w kolumnie G właściwości typu danych (terminologię, czyli format zapisu danych wyjaśniono w arkuszu w komentarzach - zob. Rysunek nr 4; inaczej zapisywane są właściwości danych tekstowych, inaczej liczbowych, a inaczej dat), a w kolumnie H numer kolumny w arkuszu, do której będą przepisywane wybrane dane z pliku tekstowego.
Arkusz "Dane"
Rysunek nr 5. Arkusz Dane. Wyniki działania modułu


W wyniku działania modułu (zob. Rysunek nr 5), do komórki wiersza piątego (5 w komórce B17 arkusza Parametry) drugiej kolumny (2 w komórce H9 arkusza Parametry) arkusza Dane (tekst: Dane w komórce B15 arkusza Parametry) wczytywany jest z pierwszego wiersza użytkowego pliku tekstowego (1 w komórce D9 arkusza Parametry) tekst (T w komórce F9 arkusza Parametry) o długości 10 znaków (10 w komórce G9 arkusza Parametry), gdzie pierwszy znak tekstu znajduje się na drugiej pozycji (2 w komórce E9 arkusza Parametry) w pierwszym wierszu użytkowym pliku tekstowego.
Do komórki B5 arkusza Dane pobierany jest tekst: 01100 (cyfry 0 1 1 0 0 i pięć znaków spacji), stanowiący numer konta; pobierane jest dziesięć znaków, gdyż w tym przykładzie numer konta może mieć maksymalnie dziesięć znaków.

Kolejne dane z pierwszego i drugiego wiersza użytkowego pliku tekstowego wczytywane są do kolejnych kolumn wiersza piątego arkusza Dane według parametrów wpisanych do kolejnych wierszy zakresu komórek D9:H17 arkusza Parametry. W ten sposób organizowany jest sposób przepisywania z pliku tekstowego do arkusza Dane jednego rekordu (jednego wiersza użytkowego), na który składają się dane z dwóch wierszy użytkowych pliku tekstowego.

Moduł w arkuszu działa w ten sposób, iż czyta dane z kolejnych wierszy pliku tekstowego, zidentyfikowanych jako użytkowe i zapisuje je do kolejnych wierszy w arkuszu Dane, aż napotka ostatni wiersz spełniający warunki wiersza użytkowego pliku tekstowego. W tym momencie program kończy zadanie czytania danych do arkusza.

Na rysunku nr 5 zaprezentowano sformatowane dane pobrane z pliku tekstowego. W wierszu czwartym arkuszu Dane umieszczono dane nagłówkowe raportu. Reszta danych, począwszy od wiersza piątego, została pobrana z pliku tekstowego, po uruchomieniu modułu. Czynność wykonywana jest w kilka sekund, po przyciśnięciu przez użytkownika przycisku w arkuszu Parametry, do którego przypisany jest program (makro), napisany w Visual Basic.
Arkusz "Dane"
Rysunek nr 6. Arkusz Dane. Wyniki działania modułu - dodatkowa możliwość


Wyniki w arkuszu Dane poddano automatycznej obróbce (zob. Rysunek nr 6). W trakcie odczytu danych, wprowadzone wzory w wierszu drugim automatycznie dokonały stosownych przeliczeń.
Zauważyć należy, iż wielkości obrotów i salda w pliku tekstowym o wartości ujemnej opisane są tekstem cr i dla pozycji o wartości ujemnej taki tekst pojawia się (jest odczytany z pliku tekstowego) w odpowiednich komórkach kolumn E, G i I arkusza Dane. Po to, aby umożliwić właściwe operowanie danym w arkuszu w wierszu drugim kolumn J, K i L umieszczono wzory. Wzory umożliwiają zamianę wprowadzonych danych dodatnich na ujemne w przypadku, w którym zostanie odczytany znacznik cr. W komórce L2 umieszczono wzór: =JEŻELI(I2="cr";-H2;H2) (zob. Rysunek nr 6). Wynikiem działania wzoru jest wartość ujemna wielkości z komórki H2, ale tylko wtedy, kiedy w komórce I2 znajduje się tekst: cr. W przeciwnym przypadku wynikiem działania wzoru jest wartość komórki H2.
Po skopiowaniu wzoru do kolumny L i zamianie wzoru na wartość (czynność tą wykonuje automatycznie moduł podczas odczytu danych), uzyskano wyniki ujemne dla tych wartości z kolumny H, dla których w odpowiedniej komórce kolumny I mieści się tekst: cr. Reszta danych - tych nie spełniających warunku funkcji JEŻELI - została przepisana w niezmienionej postaci.
Podobnie w komórce J2 umieszczono formułę: =JEŻELI(E2="cr";-D2;D2), a komórce K2: =JEŻELI(G2="cr";-F2;F2).

Moduł, wykonuje te czynności (kopiuje wszystkie wzory z wiersza drugiego, a po wyliczeniu wyników zamienia na wartość) automatycznie.
Oznacza to, że użytkownik otrzymuje automatycznie wszystkie potrzebne dane, po uruchomieniu makro.