programowanie w vba n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Programowanie w VBA PowerPoint Presentation
Download Presentation
Programowanie w VBA

Loading in 2 Seconds...

play fullscreen
1 / 14

Programowanie w VBA - PowerPoint PPT Presentation


  • 142 Views
  • Uploaded on

Programowanie w VBA. Rodzaje plików. Obsługa pliku sekwencyjnego. Dodatkowe funkcje tekstowe. Przypomnienie: Left, Right, Mid, Trim, RTrim, LTrim, Len; InStr: InStr (<start>, <tekst>, <wzorzec>)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Programowanie w VBA' - draco


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
programowanie w vba

Programowaniew VBA

Rodzaje plików. Obsługa pliku sekwencyjnego.

dodatkowe funkcje tekstowe
Dodatkowe funkcje tekstowe
  • Przypomnienie: Left, Right, Mid, Trim, RTrim, LTrim, Len;
  • InStr: InStr (<start>, <tekst>, <wzorzec>)

<wzorzec> i <tekst> mogą być zmiennymi tekstowymi, łańcuchami danych, w szczególności jednym znakiem; funkcja InStr zwraca numer znaku od którego w <tekst> pojawia się po raz pierwszy <wzorzec>;

<start> ustala od którego znaku <tekst> zaczyna szukać.

Aby zagnieździć funkcję InStr w ramach funkcji tnących tekst, należy pamiętać o odjęciu jedynki od wyniku!

plik sekwencyjny i swobodny
Plik sekwencyjny i swobodny

Plik sekwencyjny to plik zapisywany liniami o dowolnej zawartości, chociaż w przypadku danych linie powinny zawierać stałą liczbę pól; Odczytywany po linii (tryb Input), zapisywany po linii na końcu pliku (tryb Append), albo kasujący zawartość dotychczasową, o ile takowa istniała (tryb Output);

Plik o zapisie swobodnym to plik zawierający następujące po sobie bezpośrednio rekordy, przy czym każdy rekord zawiera stałą liczbę tych samych pól zawierających zawsze taki sam typ danych (ale nie Variant, a String musi mieć ustaloną długość);

dost p do pliku sekwencyjnego
Dostęp do pliku sekwencyjnego
  • Podanie ścieżki jako łańcucha znaków (w formie adresu na dysku, np.: ”C:\Folder\Folder2\plik.txt”)
  • Uproszczeniem jest użycie metody Application.GetOpenFilename lub Application.GetSaveAsFilename otwierające okienko dialogowe z folderami i ich zawartością oraz przechwytujące ścieżkę wybranego pliku do zmiennej, np.:
  • sciezka = Application.GetOpenFilename
  • Obie metody mogą używać filtrów zawężających krąg poszukiwanych plików (z góry nadany przez programistę – wówczas filtry podajemy w nawiasach za metodą);
zapis i odczyt
Zapis i Odczyt
  • Zapis i odczyt następuje linijkami, komendami Line Input, Input, Print, Write;
  • Zapis Print jest do dowolnych tekstów, Line Input do odczytu dowolnych (potencjalnie) tekstów;
  • Zapis Write służy do zapisu danych w stałym formacie (pola), Input do odczytu takich danych (czyta ustalonymi polami, używa parsera);
  • Pętla czytająca plik musi zawierać limit w postaci rozpoznania końca pliku.
  • Koniec pliku jest osobnym znakiem, nr 26 (w tabeli ASCII), ale nie trzeba go bezpośrednio czytać, ponieważ w momencie, gdy komendy czytające plik natknął się na niego, funkcja EOF(<nr pliku>) jest ustawiana jako prawdziwa (EOF – End Of File);
otwarcie pliku
Otwarcie pliku

Open <ścieżka> For Input As #1

(numerów może być więcej, jeśli czytamy więcej plików naraz)

  • <ścieżka> to typ String – w cudzysłowach bezpośrednio, albo zmienna typu String gdzie indziej ustalona, albo:

Dim sciezka As Variant

sciezka =

Application.GetOpenFilename(„TextFiles (*.txt), *.txt”)

  • funkcja GetOpenFilename uruchamia okienko wyboru pliku do odczytu i zwraca ścieżkę zaznaczonego pliku;
  • Line Input #1, <string> zwraca do zmiennej <string> linijkę z pliku #1;
  • EOF(1) – zwraca prawdę gdy skończy się plik;
przyk ad
Przykład

Sub przyklad()

Dim sciezka As Variant

Dim linia_pliku As String

Dim n As Integer

n = 1

sciezka = Application.GetOpenFilename("Text Files (*.txt), *.txt")

If sciezka <> False Then

Open sciezka For Input As #1

While Not EOF(1)

Line Input #1, linia_pliku

Cells(n, 1).Value = linia_pliku

n = n + 1

Wend

Close #1

End If

End Sub

zapis do pliku
Zapis do pliku

Open <sciezka> for Output As #1

  • (numer może być inny, <sciezka> to String wzięty na przyklad z funkcji Application.GetSaveAsFilename();

Dim sciezka As Variant

sciezka = Application.GetSaveAsFilename(, "Text Files (*.txt), *.txt")

  • funkcja GetSaveAsFilename uruchamia okienko wyboru pliku do odczytu i zwraca ścieżkę zaznaczonego pliku;
  • Print #1, <String> wpisuje zmienną <String> lub dowolny tekst w cudzysłowach jako kolejną linijkę do pliku #1;
przyk ad1
Przykład

Sub abc()

Dim sciezka As Variant

Dim linia_pliku As String

Dim n As Integer

n = 1

sciezka = Application.GetSaveAsFilename(, "Text Files (*.txt), *.txt")

If sciezka <> False Then

Open sciezka For Output As #1

While Cells(n, 1).Value <> ""

linia_pliku = Cells(n, 1).Value

Print #1, linia_pliku

n = n + 1

Wend

Close #1

Endif

End Sub

przyk ad2
Przykład
  • W pliku zaj09.xls zamieszczono program Przyklad wykorzystujący czytanie i zapisywanie pliku (tymczasowym miejscem przechowywania danych jest ListBox1 z zadania 1, a więc najpierw trzeba wykonać zadanie 1);
a co z baz danych
A co z bazą danych?
  • Jeśli mamy dane w formie CSV (ang. Comma Separated Values = pol. Dane rozdzielone przecinkami), czyli w jednej linijce mamy wiele różnych rodzajów danych, ale każda linijka ma stały skład, przykładowo:

symbol, nazwa, masa pierwiastka

Cu,miedź,64

  • Wówczas musimy pobierając dane użyć rozdzielania. Możemy napisać do tego oczywiście skomplikowaną funkcję operującą na łańcuchach znaków, ale najczęściej można skorzystać z gotowych narzędzi VBA, tzw. parsera – tu rozdzielającego dane automatycznie, np.:

(przepisywanie do drugiego pliku tylko środkowej kolumny źródła):

Input #1, symbol, nazwa, masa

Write #2, nazwa

obs uga pliku
Obsługa pliku
  • Plan działania:

Podanie ścieżki dostępu do pliku;

Otwarcie pliku;

Operacje na pliku;

Zamknięcie pliku;

zadanie 1
Zadanie 1
  • Stworzyć formularz obsługujący bazę danych (uwaga, rozszerzenie .csv, a nie .txt) składającą się z trzech kolumn (symbol pierwiastka, jego nazwa i masa);
  • Formularz wczytuje do ListBoxa kolejno symbole, nazwy lub masy zależnie od tego, co zostało wybrane w OptionButtonach;
zadanie 2
Zadanie 2
  • Zmodyfikować program z zadania 1, wzbogacając go o grupę pól opcji (litowce, berylowce, fluorowce, lantanowce, aktynowce, wszystko) a następnie wypisujący wybrany rodzaj danych tylko dla wybranej grupy pierwiastków;
  • Dodać klawisz, który w wyniku przyciśnięcia uruchomi okno dialogowe zapisu pełnego kompletu danych dla aktualnie wybranej grupy pierwiastków do pliku o podanej przez użytkownika nazwie.