Visual Basic for Applications
spotkanie 10
Dr inż. Piotr Winiarek
piotrw@ch.pw.edu.pl
GG 30396
Pliki
• Plik -
zbiór dyskowy charakteryzujący się
odpowiednią strukturą oraz oryginalną nazwą nadaną
przez użytkownika.
• Plik sekwencyjny -
zbudowany jest z wierszy, z
których każdy zakończony jest kodami Chr(13) i
Chr(10). Na końcu pliku znajduje się kod Chr(26).
Odczyt pliku odbywa się po kolei od pierwszego
wiersza do ostatniego. Plikami sekwencyjnymi są pliki
tekstowe.
• Plik jednorodny o dostępie swobodnym -
zbudowany jest z rekordów, a te z kolei z pól, w
których zapisuje się dane określonego typu. Na końcu
pliku znajduje się kod Chr(26). Odczyt danej następuje
natychmiast po podaniu numeru rekordu i deskryptora
pola. Dane przechowywane są w postaci binarnej.
Pliki sekwencyjne
• Plikami sekwencyjnymi są pliki
tekstowe
– Struktura pliku
– Odczyt pliku następuje kolejno wiersz po
wierszu. W celu zmiany znaku w ostatnim
wierszu trzeba wczytać wszystkie wiersze
poprzednie, wiersz ostatni i dopiero
poprawiać.
Chr(10)
Chr(13)
Chr(10)
Chr(13)
Chr(13)Chr(10)
Chr(26)
Chr(10)
Chr(13)
Pliki, cd.
dane
zmienna
plik
Zapis danych do pliku
Odczyt danych z pliku
Instrukcje do obsługi plików
Open
– otwórz plik
Close
– zamknij plik
For Input
– do odczytu
For Output
– do zapisu
For Append
– do dodania
Line Input
#1, wiersz – skopiuj wiersz z pliku
nr 1 do zmiennej wiersz
#1, wiersz – zapisz wiersz ze zmiennej
wiersz do pliku nr 1
EOF(1) – koniec pliku nr 1
LOF(1) – wielkość pliku w bajtach
Metody GetOpenFilename
i GetSaveAsFilename
Powodują otwarcie okna Otwórz lub Zapisz jako oraz
umożliwiają przechwyt nazwy pliku wraz ze ścieżką
dostępu pod zmienną typu string.
Dim
nazwa
As
String
nazwa = Application.GetOpenFilename(„Pliki tekstowe
(*.txt), *.txt")
Dane z InputBox do pliku
tekstowego
Sub
do_pliku_tekstowego()
Dim
nazwa
As String
, wiersz
As String
Dim lw As Byte, licznik As Byte
lw = InputBox("Ile wierszy zapiszesz do pliku?")
nazwa = Application.GetSaveAsFilename
Open
nazwa
For Output As
#1
For
licznik = 1
To
lw
wiersz = InputBox("Wpisz " & licznik & " wiersz")
#1, wiersz
Next
Close
#1
MsgBox ("Zapisano do pliku " & lw & " wierszy")
End Sub
Dane z pliku tekstowego do
arkusza
Sub
zapisz_z_pliku_tekstowego()
Dim
nazwa
As String
, wiersz
As String
Dim
licznik
As Byte
nazwa = Application.GetOpenFilename
licznik = 0
Open
nazwa
For Input As
#1
While Not
EOF(1)
Line Input
#1, wiersz
Cells
(ActiveCell.Row + licznik, ActiveCell.Column) =
wiersz
licznik = licznik + 1
Wend
Close
#1
End Sub
Dopisz dane do pliku
tekstowego
Sub
dodaj_do_pliku_tekstowego()
Dim
nazwa
As String
, wiersz
As String
Dim
lw
As Byte
, licznik
As Byte
lw = InputBox("Ile wierszy dodasz do pliku?")
nazwa = Application.GetOpenFilename
Open
nazwa
For Append As
#1
For
licznik = 1
To
lw
wiersz = InputBox("Wpisz " & licznik & "
wiersz")
#1, wiersz
Next
Close
#1
MsgBox ("Zapisano do pliku " & lw & "
wierszy")
End Sub
Podstawowe narzędzia do pracy z
tekstami
•
Dyrektywy – opcje porównywania
,
umieszcza się je na początku modułu
Option Compare Text
– porównywanie odbywa się
zgodnie z kolejnością alfabetu wybranego w Panelu
Sterowania - Ustawienia Międzynarodowe. Małe
litery nie są odróżniane od wielkich, więc „A” = „a”
Option Compare Binary
- porównywanie odbywa się
zgodnie z wartościami kodów ASCII znaków, więc
„A” > „a”
Option Compare Database
– używa się tylko w MS
Access
Podstawowe narzędzia do pracy z
tekstami
• Operatory
– & - konkatenacja (łączenie tekstów)
– Like – porównywanie tekstu ze wzorcem –
wyrażenie z operatorem Like zwraca wartość
True
lub
False
można korzystać z masek:
? – zastępuje pojedynczy znak w nazwie
# - zastępuje pojedynczą cyfrę w nazwie
[A-Z] – znak należący do listy od A do Z
[!c-e] – znak nie należący do listy od c do e
* - dowolny ciąg znaków
Wyrażenie „ABBA” Like „[A-Z]B*” zwraca
True
, podczas gdy
Wyrażenie „ABBA” Like „?B[!A-D]A” zwraca
False
.
Podstawowe narzędzia do pracy z
tekstami
• Funkcje
InStr([start, ]string1, string2[, compare]) – odnajduje pozycję, od której w
string1 występuje string2
LTrim(string) – obcina spacje wiodące
RTrim(string) – obcina spacje kończące
Trim(string) - obcina spacje przed i za tekstem w zmiennej string
Mid(string, start[, length]) – zwraca fragment tekstu ze zmiennej string
o długości lenght, zaczynający się od pozycji start
Left(string, length) – zwraca lenght znaków znaków z lewej strony tekstu
zapisanego pod zmienną string
Right(string, length) - zwraca lenght znaków znaków z prawej strony
tekstu zapisanego pod zmienną string
Len(string | varname) – liczba znaków w string lub liczba bajtów
zarezerwowana dla zmiennej varname
dziękuję z uwagę