Lucrul cu fișiere_vba

Deschiderea și închiderea unui fișier

Discutăm instrucțiunile asociate deschiderii fișierului pentru operațiile de I / O și, de asemenea, închiderea fișierului la terminarea lucrului cu acesta.







Deschidere Activează operațiile I / O în timp ce lucrează cu un fișier. sintaxa:

Calea deschisă pentru mod [Access Access] [Blocare] Ca [#] Număr de fișier [Lеn = Lungime]

Calea este o expresie șir care indică numele fișierului

Mod - stabilește modul de lucru cu fișierul. Valori valide: Adăugați, binar, intrare, ieșire sau aleatoriu

Acces - setează operațiile permise cu fișierul deschis. Valori valide: Citiți, scrieți sau citiți Scrieți

Blocare - setează operațiile permise cu fișierul deschis la alte procese. Valorile valide sunt:

Partajare, blocare citire, blocare scriere și blocare Citire număr de scriere și fișier este un număr de fișier valid. Numărul este în intervalul de la 1 la 255. Rețineți că parametrul Număr-Fișier este precedat de caracterul #. Numărul fișierului nu poate fi modificat în timp ce fișierul este deschis. Dar data viitoare când fișierul este deschis, numărul fișierului poate fi un alt număr, lungimea este un număr mai mic sau egal cu 32.767 (octeți). Pentru fișierele deschise în

Modul aleatoriu, această valoare este lungimea înregistrării. Pentru fișiere cu acces secvențial, această valoare este numărul de caractere tamponate Despre manual deschis, este de asemenea important să se știe că în timp ce se execută VBA rezervă, de asemenea, tamponul fișier în memorie pentru a accelera procesul de înregistrare și citire (scriere directă în jos informațiile de pe disc poate încetini semnificativ punerea în aplicare a programelor care mai ales atunci când lucrați cu fișiere mari). Numărul maxim de tampoane pentru fișiere este setat în fișierul de sistem Config.sys

Închide Încheie operațiile I / O cu un fișier deschis cu instrucțiunea deschisă. Această instrucțiune "șterge tamponul și instruiește sistemul de operare să actualizeze FAT (tabelul de alocare a fișierelor). Este important ca fiecare fișier să fie închis la terminarea lucrului cu acesta, altfel poate duce la pierderea parțială a informațiilor.

Închideți [Lista numerelor de fișiere] Argumentul Numar fișier poate reprezenta unul sau mai multe numere de fișier. Aceasta folosește următoarea sintaxă, în cazul în care FileNumber este orice număr valid de fișier: [[#] FileNumber] [[#] FileNumber].

Lucrul cu fișiere_vba

Reset Închide toate fișierele active deschise cu instrucțiunea deschisă și scrie conținutul tuturor buffer-elor de fișiere

Pe discul deschis cu instrucțiunea Open

FreeFile Funcția returnează un număr accesibil care poate fi folosit în instrucțiune

Iată un exemplu de instrucțiune care deschide primul fișier binar pentru scrierea unui dosar de lucru și apoi instrucțiunea care închide acest fișier binar.

Deschideți "Prima" pentru accesul binar Scrieți ca # 1 Închideți # 1

Introducerea datelor într-un fișier de acces seriat

Vom discuta instrucțiunile utilizate la introducerea informațiilor în fișierul de acces seriat.

Iată un exemplu de utilizare a instrucțiunii de intrare # pentru a citi datele dintr-un fișier. În acest exemplu, se presupune că există un fișier grup de economiști pe disc care conține informații despre elevi. Fișierul a fost creat cu ajutorul funcției de scriere # și constă din două coloane, dintre care primul indică numele de familie și în al doilea - scorul studentului. Pentru confortul de a lucra cu informații, se introduce tipul de utilizator Studenți. Procedura pentru exemplul de utilizare a intrărilor citează secvențial numele și evaluările din fișier și le transmite în celulele din prima și a doua coloană a foii de lucru.

'Nume ca șir * 20

Evaluare ca șir * 3 Tip sfârșit

Subexemplu Utilizează () Dim Student ca studenți

Pentru intrare ca 12 i = 1

În timp ce nu EOF (2) Cu Student

Intrare # 2. Nume. evaluare

Celule (i, 1) .Value =. Numele de familie

Celule (i, 2) Valoare =

i = i + 1 Loop Close # 2

Aici este un exemplu de utilizare a liniei de introducere # instrucțiuni pentru a citi datele din fișierul gruppaEkonomistov având aceeași structură ca și în exemplul anterior, dar a creat cu declarația de imprimare #. Instrumentul de introducere a liniei # citește întreaga linie din fișier într-o variabilă de șir. Prin urmare, în acest caz, nu mai este necesar să se utilizeze tipul definit de utilizator, dar este suficient să se limiteze numai la variabila șir obișnuită. Toate informațiile care urmează să fie citite pe linie sunt introduse în caseta de dialog

Private Sub UserForm_Initialize () Dim Student ca șir

Deschideți "Grupul de economiști" pentru intrare ca # 1

Ștergeți în timp ce nu este EOF (l) Intrare linie 11, Student

Addltem Student i = i + 1 Buclă Închidere #l

Lucrul cu un fișier de acces aleator

Iată instrucțiunile de intrare / ieșire a informațiilor atunci când lucrați cu un fișier de acces aleator, precum și instrucțiuni pentru determinarea lungimii fișierului și a poziției curente a indicatorului din fișier.







Put Se scrie conținutul unei variabile într-un fișier de acces aleatoriu. sintaxa:

Puneți [#] Numărul fișierului, [Număr de intrări]. ImyaPeremennoy

Numărul fișierului - numărul fișierului

Numărul de înregistrare - numărul de înregistrare (modul Random) sau numărul de octeți (modul binar) de la care să înceapă înregistrarea. Dacă NomerZapisi omis, înregistrată la locul unde a fost stabilit indicatorul după ultima declarație sau Get Pune, sau în cazul în care acesta este tradus folosind

Lucrul cu fișiere_vba

VariableName este numele variabilei care conține datele pe care doriți să le scrieți în fișier

Obțineți Citire de date dintr-un fișier deschis de acces aleatoriu la o variabilă. sintaxa:

Obțineți [#] Numărul fișierului, [Număr de intrări]. ImyaPeremennoy

Numărul fișierului - numărul fișierului

NomerZapisi - numărul de înregistrare (în fișiere modul aleator) sau un număr de octet (mod binar în fișierul), de la care să înceapă citirea Imyaperemennoy - numele variabilei pe care doriți să plasați datele de citire

Căutați Funcția returnează o valoare lungă care specifică poziția curentă a indicatorului de citire / scriere din fișierul deschis de instrucțiunea Deschidere. sintaxa:

LOF Funcția returnează o valoare de tip Long, reprezentând dimensiunea fișierului în octeți deschise cu instrucțiunea Open. Pentru a determina dimensiunea unui fișier închis, utilizați funcțiile FileLen.

FileLen Returnează o valoare lungă care conține dimensiunea fișierului în octeți. sintaxa:

După cum se vede din secțiunea anterioară, de exemplu, pentru citirea de informații prin intermediul manuală de intrare # de fișier gruppaEkonomistov, fișier de acces în serie, uneori, convenabil pentru a specifica o secvență de înregistrări (în acest caz, înregistrările Student), și este format dintr-un grup de domenii, fiecare dintre înregistrările (în acest caz din câmpurile Nume și Evaluare). Rețineți că o astfel de grupare de înregistrări nu este ceva inerent în fișierele de acces secvențial. Aceasta este pur și simplu o abordare care simplifică procesul de citire secvențială a înregistrărilor. În fișierul de acces secvențial, există o singură structură internă, formată din delimitatori (virgule sau simboluri speciale care indică o nouă linie).

Spre deosebire de fișierele de acces secvențial, într-un fișier de acces aleator, intrarea este un element încorporat. Un fișier de acces aleatoriu este un fișier sortat după înregistrări, ceea ce vă permite să mutați rapid la orice înregistrare, ocolind pe cele anterioare.

Când creați un fișier de acces aleator, specificați lungimea maximă a fiecărei înregistrări. Este de la sine înțeles că orice înregistrare pot fi introduse date nu ocupă tot spațiul alocat pentru înregistrare, dar nu puteți introduce date care necesită mai mult spațiu decât lungimea admisibilă a înregistrării. Informațiile suplimentare vor fi pur și simplu trunchiate.

În practică, este convenabil să creați un fișier separat care să stocheze informații despre structura fișierului de acces aleatoriu: structura înregistrării, lungimea acesteia și antetele câmpului. Rețineți că, atunci când deschideți un fișier de acces aleator, spre deosebire de un fișier secvențial, nu este necesar să îl specificați în mod specific, acesta se deschide pentru a introduce sau a scoate informații. Intrarea și ieșirea informațiilor sunt determinate de comenzile Puneți și primiți.

Iată un exemplu de lucru cu un fișier de acces aleator, grupul Economists, care are aceeași structură ca în exemplul anterior. Fișier creat folosind zapisvoayl procedură care secvențial citește datele din prima și a doua coloană a foii de lucru și apoi le introduce într-un fișier. În această procedură, numărul de intrări de intrare este fixă ​​și egală cu 5. Procedura de citire din fișierul produce efectul opus - citește datele din dosar și le intră în celulele de a treia și a patra coloană a foii de lucru. O caracteristică interesantă a fișierului de acces aleatoriu este că atunci când lucrați cu acesta puteți determina numărul de înregistrări fără a le redenumi. Numărul de intrări este egal cu raportul dimensiunii fișierului cu lungimea unei înregistrări. Lungimea de înregistrare este setat pentru a crea fișierul și acces aleator este determinat de tipul variabilei cu care a fost creat fișierul, deschideți dimensiunea fișierului returnează funcția OLF, dar nu a fost încă

Lucrul cu fișiere_vba

open - funcția FileLen. În acest caz, numărul de intrări în fișier este

Last Name As String * 20 Rating ca șir * 3 Sfârșit Tip

Lucrul cu fișiere_vba

Obiectul FileSearch are funcționalitatea casetei de dialog Deschise afișată pe ecran selectând comanda Fișier, Deschidere. Obiectul FileSearch intră în obiectul Application și include ierarhic

Familia FoundFiles, care este o listă a tuturor fișierelor returnate ca urmare a unei căutări

Familia PropertyTests, care reprezintă o listă a tuturor criteriilor de căutare

Fig. 13.1. Structura ierarhică a obiectului FileSearch

Obiectul FileSearch este returnat de proprietatea FileSearch a obiectului Application.

Obiectul FileSearch are următoarele două metode.

Executați Căutarea fișierelor specificate. sintaxa:

Executați (SortBy, SortOrder, AlwaysAccurate)

SortBy - stabilește modul în care sunt sortate fișierele. Valorile valide: msoSortbyFileName, msoSortbyFileType, msoSortbyLastModif condus și msoSortbySize

SortOrder - stabilește ordinea de sortare a fișierelor.

Valorile valide sunt: ​​msoSortOrderAscending și msoSort Order Descending AiwaysAccurate - valori valide: True

fișiere) și False (altfel)

NewSearch Setează criteriile utilizate pentru căutarea implicită

Iată cele mai frecvent utilizate proprietăți ale obiectului FileSearch.

Următorul exemplu vă permite să listați toate fișierele din folderul curent în caseta de listă a casetei de dialog:

Private Sub UserForm_Initialize () ComboBoxl.Clear Cu Application.FileSearch

FileName = "* .xls" .SearchSubFolders = False Daca .Execute (SortBy: = msoSortByFileName, sortorder: = msoSortOrderAscending)> 0 Apoi, pentru i = 1 Pentru .FoundFiles.Count ComboBoxl.Addltem .FoundFiles (i)

Sfârșit Dacă Sfârșitul Cu End Sub

Programul anterior afișează numele complet al fișierelor în caseta combo, adică numele și calea fișierului. Pentru a afișa numai numele fișierelor în listă (fără o cale), programul trebuie modificat după cum urmează:

Private Sub UserForm_Initialize () Dim NumeFoldere ca String

Dim Nume_file ca dimensiune lungime ca valoare a unui șir ca întreg

ComboBoxl.Clear Nume folder = CurDir Lungime cale = Len (nume folder) Cu Application.FileSearch .FileName = "* .xls"

Dacă .Execute (SortBy: = msoSortByFileName, sortorder: = msoSortOrderAscending)> 0 Apoi pentru i = 1 Pentru a .FoundFiles.Count

FileName = Dreapta (.FoundFiles (i), Len (.FqundFiles (i)) - DlinaPuti - 1) ComboBoxl.Addltem FileName

Sfârșit Dacă Sfârșitul Cu End Sub







Articole similare

Trimiteți-le prietenilor: