Munka faylami_vba

Nyitása és zárása egy fájlt

Beszéljétek az utasításokat kapcsolódó fájl megnyitásával I / O műveletek, valamint a lezárás befejezésekor a munka vele.

Nyílt végrehajtását teszi lehetővé az I / O műveletek a fájlt. szintaxis:

Nyílt út a mód [elérheti az Access] [Lock] A [#] FileNumber [Len = length]

Path - egy string kifejezés, amely megadja a fájl nevét

- Beállítja az üzemmódban a fájlt. Az érvényes értékek: hozzáfűzése, Binary, bemeneti, kimeneti, vagy a Random

Access - állapítja meg a működési engedélyt a fájl megnyitásakor. Az érvényes értékek: olvasás, írás, vagy olvassa el írása

Lock - állítja a művelet megengedett megnyitni egy fájlt más folyamatokat. Az érvényes értékek:

Közös, Lock Read, Write Lock and Lock Read Write és sorszámokkal - lehetséges ügyszám. A számot 1 és 255 Megjegyezzük, hogy a szám a paraméter fájl előzi meg a # jelet. FileNumber értéket nem lehet módosítani, amíg a fájl megnyitásakor. De a következő alkalommal, amikor megnyitja a fájlt több fájl lehet egy másik szám hossza - szám kisebb vagy egyenlő, mint 32.767 (bájt). Tudja megnyitni a

Random mód, ez az érték a rekord hosszát. Fájlokhoz szekvenciális hozzáférés, ez az érték az a szám, pufferelt karaktereket tartalmazó kézikönyv megnyitásához is fontos tudni, hogy futás közben a VBA is fenntartja a fájl buffer, hogy gyorsítsák fel a folyamatot a felvétel és az olvasás (közvetlen írásos le az adatokat a lemezen is jelentősen lelassítja a programok végrehajtását, amelyek különösen a nagy méretű fájlok). A legnagyobb számú fájlpuffer meg a Config.sys fájlrendszer

Bezárás végződik I / O műveletek a fájlmegnyitási keresztül nyitott oktatás. Ez az utasítás „törli a puffer, és azt mondja az operációs rendszer frissítésére a FAT (fájlallokációs tábla). Fontos, hogy minden fájlt a munka befejezésekor vele zárva volt, különben nem vezethet részleges adatvesztés.

Bezár [SpisokNomerovFaylov] SpisokNomerovFaylov érv lehet egy vagy több fájl számokat. Ez a következő szintaxist használja, ahol FileNumber bármilyen érvényes ügyszáma: [[#] FileNumber] [[#] FileNumber].

Munka faylami_vba

Reset Bezárja az összes aktív megnyitott fájlok egy manuális nyitott, így írja a fájl tartalmát puffer

Lemezre, kinyitotta a Megnyitás nyilatkozat

FreeFile függvény a rendelkezésre álló szám, amelyet fel lehet használni a kézi

Itt egy példa az utasítások megnyílik az írás a bináris fájlt a munkakönyvtárt első, majd az utasításokat, amely ezt a bináris fájlt.

Nyissa meg a „First” bináris Access Írj Mint # 1 # 1 bezár

Az adatok beviteléhez a szekvenciális hozzáférés fájl

Beszéljétek utasításokat beírásakor információk a szekvenciális fájlban.

Itt egy példa a beviteli # utasítások adatolvasás fájlból. Ez a példa azt feltételezi, hogy a lemez van egy csoport közgazdász, amely információkat tartalmaz a hallgatók. A fájl felhasználásával jött létre az utasításokat levelet # és két oszlopból áll, amelyek közül az első tartalmazza a nevét, és a második - értékelését a hallgató. A kényelem, az adatok automatikusan a felhasználó típusát diákok. Az eljárás például a beviteli sorban kiolvassa a családjára és értékelése a fájlt, és kiadja ezeket a cella az első és a második oszlop a munkalapon.

Név As String * 20

Értékelés As String * 3 End Type

Sub PrimerIspolzovaniyaInput () Dim Mivel diák diákok

A bemenet i = 1 12

Do While Not EOF (2) A hallgató

Input # 2. Név. értékelés

A sejteket (i, 1) .Value = .Familiya

A sejteket (i, 2) .Value = Befejezés .Otsenka

i = i + 1 hurok bezárása # 2

Itt egy példa segítségével Vonal bemenet # utasításokat olvasni az adatokat a gruppaEkonomistov fájlt, amelynek a szerkezete ugyanolyan, mint az előző példában, de megteremtette a Print # nyilatkozatot. Vonal bemenet # utasítás beolvassa az egész sort a fájlból egy string változó. Ezért ebben az esetben nincs szükség, hogy egy egyéni típusú bevezetett, és csak annyi, hogy korlátozzák a normális string változó. Minden információ olvasható soronként szerepel a listán, a dialógus

Private Sub UserForm_Initialize () Dim Student As String

Open "GruppaEkonomistov" For Input # 1

Tiszta Do While Not EOF (l) Line Input 11, Student

Addltem Student i = i + 1 hurok bezárása #l

Munka a fájl véletlen elérésű

Itt van egy I / O utasítás információt, ha dolgozik, a fájlt véletlenszerű hozzáférés, valamint utasításokat hosszának meghatározására, és a fájl kurzorpozícióját a fájlt.

Put ír a változó tartalmát a véletlen hozzáférésű fájl. szintaxis:

Tedd [#] FileNumber [NomerZapisi]. ImyaPeremennoy

FileNumber - fájl száma

NomerZapisi - rekord számú (Random mód) vagy byte szám (bináris módban), amellyel meg szeretné kezdeni a felvételt. Ha NomerZapisi elhagyható, rögzített a helyszínen, ahol azt állították mutatót, miután az utolsó nyilatkozatot Get vagy Tedd, vagy ahol ez a átszámítani

Munka faylami_vba

ImyaPeremennoy - a változó nevét tartalmazó adatokat egy fájlba

Get adatokat olvas egy nyitott fájlt egy változó random access. szintaxis:

Kap [#] FileNumber [NomerZapisi]. ImyaPeremennoy

FileNumber - fájl száma

NomerZapisi - rekord számú (a véletlenszerű módban fájlokat), illetve byte szám (bináris módban a fájl), ahonnan indul olvasási Imyaperemennoy - a változó nevét el szeretné helyezni az olvasott adatokat

Keressétek a függvény értéke típusú Long, amely meghatározza a jelenlegi helyzetben a kiolvasási mutató / felvétel belül létrehozott fájl a Megnyitás nyilatkozatot. szintaxis:

LOF függvény egy értéket típusú Long képviselő a fájl mérete bájtban kinyitotta a Megnyitás nyilatkozatot. Méretének meghatározására a zárt használandó fájl FileLen funkciót.

FileLen vissza egy hosszú, azzal a fájl mérete bájtban. szintaxis:

Ahogy az előző részben példát információ olvasása révén manuális bemeneti # A gruppaEkonomistov fájlok, soros elérés Néha kényelmes megad egy sorozatot rekordok (ebben az esetben a hallgatói Records), és úgy van kialakítva egy csoportja területeken, egyes feljegyzések (ebben az esetén a mezők neve és értékelés). Megjegyzendő, hogy ez a csoportosítás rekordok nem valami velejárója szekvenciális hozzáférés fájlokat. Ez az egyszerű megközelítés lehetővé teszi, hogy egyszerűsítse a folyamat szekvenciális olvasási rekordok. A szekvenciális hozzáférés fájl létezik csak egy belső szerkezet, amelyet szeparátorok (vesszővel vagy speciális karaktert jelölő új sor).

Ezzel szemben a szekvenciális hozzáférés fájlokat a véletlen hozzáférésű fájlok rögzítésére van ágyazva. elérésű fájl - egy fájlt, rendezve a bejegyzések, így gyorsan mozog minden rekordot, átadva az előzőt.

Amikor létrehoz egy fájlt véletlen hozzáférésű jelzi a maximális hosszát minden rekord. Magától értetődik, hogy minden rekord lehet a bevitt adatok nem foglalják el a helyet juttatott a rekordot, de nem tud belépni igényel az adatok több helyet, mint a megengedett hossza a felvételt. Extra információ egyszerűen vágva.

A gyakorlatban célszerű létrehozni egy külön fájlban, amely információkat tárol a szerkezet a véletlen elérésű fájl: rekord szerkezete, hossza, és a helyszíni címeket. Vegye figyelembe, hogy ha kinyitja elérésű fájl, szemben a szekvenciális hozzáférési fájl, nem kifejezetten jelzi, hogy nyitva van a bemeneti vagy kimeneti. A bemeneti és kimeneti adatok határozzák Put és a Get parancsokat.

Itt egy példa a műveletet egy véletlen elérésű fájl csoport közgazdászok, amelynek felépítése ugyanolyan, mint az előző példában. Fájl létre zapisvoayl eljárást egymás után beolvassa az adatokat az első és a második oszlop a munkalapot, és majd beadja azokat egy fájlba. Ebben az eljárásban a száma, bemeneti bejegyzés van rögzítve, és egyenlő 5. Az eljárás kiolvasására a fájlt az ellenkező hatást - olvassa az adatokat a fájlt, és beírja a sejtek a harmadik és negyedik oszlopa a munkalapon. Egy érdekes tulajdonsága véletlen elérésű fájl, hogy ha dolgozik vele, akkor meg a bejegyzések száma, nem számítva azokat. A bejegyzések száma egyenlő az arány a fájl mérete a hossza egy rekordot. A rekord hossza van beállítva, hogy hozza létre a fájlt és véletlenszerű hozzáférés típusa határozza meg a változó, amellyel a fájl létrehozásának, nyissa meg a fájl méretét adja vissza LOF funkció, de még nem

Munka faylami_vba

Open - működnek FileLen. Ebben az esetben a bejegyzések számát a fájlban egyenlő

Név As String * 20 Értékelés As String * 3 End Type

Munka faylami_vba

Filesearch objektum a funkcionalitást a párbeszédablak Megnyitás (Open), megjelenik ekrane_posredstvom választhat a Fájl, Megnyitás (File, Open). Filesearch objektum tartalmazza az objektum hierarchia és kérelem tartalmazza

Család FoundFiles, ami egy listát az összes fájlt, amelyek vissza a keresési eredményekben

Család PropertyTests, ami egy listát az összes keresési feltétel

Ábra. 13.1. A hierarchikus felépítése objektum filesearch

Filesearch objektum visszaadja az ingatlan filesearch objektum alkalmazás.

Filesearch objektum a következő két módszer.

Végrehajtás Search megadott fájlt. szintaxis:

Execute (céljából SortBy, sortorder, AlwaysAccurate)

Céljából SortBy - létrehozza a módszer válogatás fájlokat. Az érvényes értékek: msoSortbyFileName, msoSortbyFileType, msoSortbyLastModif vezetett és msoSortbySize

Sortorder - állítja a sorrend a fájlok.

Az érvényes értékek: msoSortOrderAscending és msoSort Order Csökkenő AiwaysAccurate - megengedett értékek: True (keresés és módosított

fájlok) és hamis (egyéb)

NewSearch állítja az alkalmazott kritériumokat az alapértelmezett keresési

Íme a leggyakrabban használt tulajdonságait filesearch objektumot.

A következő példa lehetővé teszi a listában a párbeszédablak felsorolni az összes fájlt az aktuális mappában:

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

FileName = "* .xls" .SearchSubFolders = False Ha .Execute (céljából SortBy: = msoSortByFileName, sortorder: = msoSortOrderAscending)> 0 Ekkor i = 1 az .FoundFiles.Count ComboBoxl.Addltem .FoundFiles (i)

End If End With End Sub

Előző program megjeleníti a területen a teljes listát a fájl nevét, t. E. A fájl nevét és elérési útját. Ahhoz, hogy megjelenjen csak a fájlnevek listája (nincs út), a program módosítani kell a következő módon:

Private Sub UserForm_Initialize () Dim DestName As String

Dim fájlnevet String Dim As Integer DlinaPuti

ComboBoxl.Clear DestName = CurDir DlinaPuti = Len (DestName) A Application.FileSearch .FileName = "* .xls"

Ha .Execute (céljából SortBy: = msoSortByFileName, sortorder: = msoSortOrderAscending)> 0 Ezután i = 1 A .FoundFiles.Count

FileName = Jobb (.FoundFiles (i), Len (.FqundFiles (i)) - DlinaPuti - 1) ComboBoxl.Addltem fájlnév

End If End With End Sub

Kapcsolódó cikkek