background image

Visual Basic for Applications

spotkanie 10

Dr inż. Piotr Winiarek

piotrw@ch.pw.edu.pl

GG 30396

background image

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.

background image

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)

background image

Pliki, cd.

dane

zmienna

plik

Zapis danych do pliku

Odczyt danych z pliku

background image

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

Print 

#1, wiersz – zapisz wiersz ze zmiennej 

wiersz do pliku nr 1

EOF(1) – koniec pliku nr 1
LOF(1) – wielkość pliku w bajtach

background image

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") 

background image

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")

Print

 #1, wiersz

Next
Close 

#1

MsgBox ("Zapisano do pliku " & lw & " wierszy")

End Sub

background image

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

background image

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")
  

Print

 #1, wiersz

Next
Close

 #1

MsgBox ("Zapisano do pliku " & lw & " 
wierszy")

End Sub

background image

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

background image

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

.

background image

Podstawowe narzędzia do pracy z 

tekstami

• Funkcje

InStr([start, ]string1string2[, 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(stringstart[, length]) – zwraca fragment tekstu ze zmiennej string 

o długości lenght, zaczynający się od pozycji start

Left(stringlength) – zwraca lenght znaków znaków z lewej strony tekstu 

zapisanego pod zmienną string

Right(stringlength) - 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

background image

dziękuję z uwagę


Document Outline