Dobre źródła
Jeżeli uważnie śledziłeś dotychczasowe odcinki naszego kursu pisania skryptów, to poznałeś już podstawowe zagadnienia związane z wykorzystaniem języka Visual Basic Script. Teoria więc była. Nadszedł czas na praktykę.
Tym razem proponujemy nieco lżejszy odcinek. Darujemy sobie wyjaśnienia teoretyczne. Podstawowe konstrukcje, strukturę skryptu, sposoby deklaracji zmiennych, stałych, a także posługiwanie się obiektami i powiązanymi z nimi metodami powinieneś już znać. Skupimy się zatem na przedstawieniu przykładowych skryptów pochodzących z serwisu o nazwie „Cześć, skrypciarze!” prowadzonego przez Micro- soft. Serwis ten funkcjonuje jako część witryny Microsoft Technet. W końcu jedną z najlepszych metod nauki są ćwiczenia na konkretnych, działających przykładach.
Pobieranie linków z arkusza Excela
Czy istnieje sposób na wyeksportowanie z arkusza Excela linków do stron WWW albo adresów e-mailowych, by można było ich użyć np. w programie pocztowym lub przeglądarce WWW? Oczywiście, że istnieje. Znaleźliśmy odpowiedni skrypt w bazie wiedzy Technet. Przedstawiamy go w nieco zmodyfikowanej wersji – listing 1.
Krok 1
Najpierw tworzony jest obiekt Excel.Application (linia 1), któremu ustawiasz właściwość Visible na prawdę (true; linia 2), co oznacza widoczny w działaniu program Excel.
Krok 2
Następnie, w kolejnych dwóch wierszach (linie 4 i 5) kodu najpierw otwierasz jakiś arkusz (w przykładzie jest to arkusz o nazwie Test.xls, znajdujący się w folderze \Scripts\ na dysku C: – oczywiście na własne potrzeby możesz dowolnie zmodyfikować tę ścieżkę). W kolejnej linii z otwartego już pliku skrypt otwiera pierwszy skoroszyt. Ściślej, należałoby raczej napisać, że najpierw otwierasz plik skoroszytu, a następnie pierwszy arkusz z tego pliku.
Krok 3
Kolejna linia (7) spowoduje pobranie wszystkich hiperłączy znalezionych w otwartym arkuszu.
Krok 4
W linii 9 zaczyna się konstrukcja, która powinna już być ci znana z poprzednich części kursu – pętla For Each… Next. Jest ona powtarzana dopóty, dopóki jest znajdowane jakieś łącze w otwartym arkuszu Excela.
Krok 5
Wewnątrz pętli znajdują się trzy linie korzystające z obiektu WScript i metody Echo. Z poprzednich odcinków wiesz, że tego typu konstrukcji używa się wtedy, gdy skrypt ma wyświetlić na ekranie jakiś komunikat. W tym przypadku po prostu w jednej linii będzie wyświetlony tekst z odczytanej komórki Excela, zawierającej link. W kolejnej wyświetli się adres „ukryty” w linku. Ostatnia linia jest linią pustą – celowo, by oddzielić kolejne wystąpienia adresów, odczytane z otwartego arkusza Excela.
Usuwanie znaków tabulacji z plików tekstowych
Ręczne kasowanie znaków tabulatora z dużego pliku tekstowego to nużące i długotrwałe zajęcie. Tymczasem, korzystając z prostego skryptu, możesz to załatwić błyskawicznie. Warto przyjrzeć się tym razem temu, co kryje w sobie kod przedstawiony w listingu 2.
Krok 1
Pierwsze dwie linie (1 i 2) to deklaracja dwóch stałych (od razu z przypisaniem im wartości – w końcu to stałe, więc wartości te nie ulegną zmianie aż do końca skryptu), których będziesz używał w skrypcie do operacji na pliku.
Krok 2
W kolejnej linii tworzony jest obiekt Scripting.FileSystemObject, dzięki któremu – posługując się metodą OpenTextFile – otwierasz plik tekstowy do odczytu. Oczywiście ścieżka do pliku tekstowego widoczna w linii 4 jest zupełnie dowolna. Możesz zmodyfikować ten fragment, dostosowując go do własnych potrzeb.
Krok 3
Blok kolejnych ośmiu linii to znana z poprzednich odcinków kursu pętla Do Until. Pętla będzie kontynuowana tak długo, aż właściwość pliku (objFile) AtEndOfStream przyjmie wartość true. Innymi słowy, działania będą zapętlone, dopóki nie zostanie osiągnięty koniec pliku.
Krok 4
Zwróć uwagę, że wewnątrz wspomnianej pętli znajduje się jeszcze konstrukcja warunkowa If Then End If. Sprawdza ona, czy ostatni znak w danym wierszu jest znakiem tabulatora (który z założenia należy usunąć). Skąd skrypt „wie”, że chodzi o znak tabulatora? Wyrażenie Chr(9) oznacza znak o kodzie ASCII równym 9, a taki właśnie kod ma znak tabulatora. A skąd wiadomo, że chodzi o ostatni znak w wierszu? O tym z kolei decyduje obecność funkcji Right widocznej w linii 9.
Krok 5
W linii 10 za pomocą funkcji Len jest badana liczba znaków w wierszu. Następnie w linii 11 za pomocą funkcji Left są pobierane znaki, ale bez ostatniego, o czym świadczy wartość inLenght-1. Kolejna linia dodaje do każdego wiersza otwartego pliku znak przejścia do nowej linii i powrotu karetki. W jaki sposób? Za pomocą wewnętrznej stałej vbCrLf (którą miałeś okazję poznać w poprzednim odcinku naszych skryptowych zmagań).
Krok 6
Na obecnym etapie, po wykonaniu pętli skrypt będzie przechowywał w pamięci komputera zmodyfikowaną wersję wejściowego pliku tekstowego, pozbawioną już znaków tabulatora. Trzeba teraz ten wynik zapisać do pliku. Aby to zrobić, najpierw należy zamknąć wciąż otwarty plik, czego dokonuje kod zawarty w linii 16.
Krok 7
W linii 18 plik jest ponownie otwierany, za pomocą użytej wcześniej metody Open TextFile. Oczywiście ścieżkę do pliku widoczną w nawiasie możesz dowolnie zmodyfikować. Gdy plik zostanie otwarty, używasz metody Write (patrz linia 19), by zawartość pamięci (zmodyfikowany plik) zapisać na dysku. Ostatnia linia to zamknięcie pliku.
Krok 8
Szczególną cechą tego skryptu jest to, że nie widać jego działania. Po prostu po jego uruchomieniu niemal natychmiast wskazany plik tekstowy (w linii 5) zostaje zmodyfikowany.
Przydatne adresy
Analiza gotowych skryptów to znakomity sposób na naukę. Zwłaszcza wtedy, gdy kod oglądanych skryptów jest dobrze udokumentowany. Skąd zatem wziąć gotowe skrypty? Oczywiście z internetu. Wspomniany i polecany przez nas serwis Microsoftu „Cześć, skrypciarze!” to niejedyne miejsce w sieci, gdzie znajdziesz gotowe skrypty. Na stronach dostępnych pod podanymi poniżej adresami znajdziesz nie tylko skrypty, ale także bogatą dokumentację, porady dotyczące pisania skryptów i wyjaśnienia odnośnie obiektów czy funkcji stosowanych w skryptach.