Professional Documents
Culture Documents
Bár az Excel maga rendelkezik olyan beépített osztállyal (FileSystem), amellyel fájl, könyvtár vagy meghajtó művelteket
hajthatunk végre, azonban ez gyakran igen kevésnek bizonyulhat, ezért nem ezt fogjuk használni. Rendelkezésünkre áll
ugyanis egy kifejezetten fájlkezelésre használatos objektummodell, amelynek segítségével objektumorientált módon
játszhatunk fájljainkkal, könyvtárainkkal, meghajtóinkkal. A továbbiakban ezzel az objektummodellel fogunk
megismerkedni.
Objektummodellünket hivatalosan FileSystemObject Object Model-nek hívják.
FileSystemObject objektum
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists("C:\Documents and Settings\MakroMester.txt") = True Then
MsgBox "A fájl létezik az adott könyvtárba"
Else
MsgBox "A fájl nem létezik az adott könyvtárba"
End If
End Sub
A metódus igaz vagy hamis értéket ad vissza, attól függően, hogy fájl létezik e, vagy sem. Ennek analógiájára
vizsgálhatjuk meg egy könyvtár létezését is a FolderExists metódussal.
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists("c:\Documents and Settings") = True Then
MsgBox "A könyvtár létezik az adott könyvtárba"
Else
MsgBox "A könyvtár nem létezik az adott könyvtárba"
End If
End Sub
Ezek után már egy meghajtó létezésének vizsgálatától sem kell megijednünk, amelyet DriveExists metódussal hajthatunk
végre.
2. Fájlnévvel és útvonallal kapcsolatos információk megszerzése
Bár nem igényel túl sok programozó tudást, a fájlnév kinyerése egy útvonalból, vagy egy fájl kiterjesztésének
megszerzése, mégis bosszantó lehet ezeket az egyszerű kis String kezelő rutinokat megírni, ahelyett, hogy a problémánk
érdemi részével tudnánk foglalkozni.
A objektum ebben is a segítségünkre siet, és számos metódussal segít minket. Nézzük is meg ezeket.
A GetFileName metódus segítségével egy útvonalban lévő fájl nevét kapjuk eredményül. Paraméterként mindössze az
útvonalat kell megadnunk, amely lehet abszolút vagy relatív.
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetFileName("c:\Documents and Settings\Makro.txt")
End Sub
Amennyiben egy adott útvonalból számunkra csak a meghajtó neve érdekel, akkor használjuk a GetDriveName
metódust.
MsgBox fso.GetDriveName("c:\Documents and Settings\Makro.txt")
De mi van akkor ha nekünk, az útvonalból csak a fájl nevére van szükségünk a kiterjesztés nélkül. Ekkor sem kell
csüggednünk, és a teljes fájlnév lekérdezést követően további String kezelő függvényekkel bajlódnunk, hiszen
rendelkezésünkre áll a GetBaseName metódus, amely pontosan ezt a feladatot, hajtja végre.
MsgBox fso.GetBaseName("c:\Documents and Settings\Makro.txt")
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "c:\Documents and Settings\Makro.txt", "c:\Documents and Settings\Macros\"
End Sub
A fájlok mozgatását az objektum MoveFile metódusával hajtattuk végre. Hasonlóan a FileCopy metódushoz, itt is két
kötelező paramétert kell átadni. Az egyik a forrás fájl vagy fájlok, illetve a célmappa. Ennél a metódusnál nincs több
paraméter. Természetesen itt használhatjuk a joker karaktereket.
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFile "c:\*.txt", "c:\Documents and Settings\"
End Sub
A fájlkezelés fontos eleme a fájlok törlése, amelynek végrehajtása a DeleteFile metódussal történik. Ennél a metódusnál
is megengedett, hogy egyszerre több fájl töröljünk a joker karakterek alkalmazásával. A metódus egyik paraméterével a
törlendő fájl(ok) útvonalát kell átadnunk, a másik opcionális paraméterrel pedig lehetőségünk van arra, hogy akkor is ki
tudjuk törölni a fájlokat, ha azoknak csak olvashatóra van állítva az attributruma. Ez utóbbit, a paraméter igazra
állításával oldhatjuk, meg. Az alapbeállítás egyébként False.
Sub FileKezeles()
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile "c:\Documents and Settings\Macros\Makro.txt"
End Sub
Könyvtár létrehozása
Könyvtár másolása (A benne lévő könyvtárakkal és fájlokkal együtt)
Könyvtárak mozgatását
Könyvtárak törlése
Haladunk akkor ebben a sorrendben és nézzük meg ezek megvalósulását az objektum segítségével.
Könyvtárat a CreateFolder metódussal hozhatunk létre, amelynek egyetlen paraméterével a létrehozandó könyvtár
nevét kell megadnunk.
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateFolder "c:\Documents and Settings\Új könytár"
End Sub
Könyvtárat a CopyFolder metódussal tudunk másolni, amely teljes mértékben hasonlít CopyFile metódushoz. Ugyan
azokkal a paraméterekkel rendelkezik, ugyanúgy használhatunk joker karaktereket, azzal a különbséggel, hogy itt nem
fájl neveket, hanem könyvtár neveket kell megadnunk.
Egy könyvtár másolása:
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFolder "C:\Documents and Settings\Új könytár", "C:\"
End Sub
Könyvtárak mozgatására szerintem már mindenki kitalálta a MoveFolder nevű metódus alkalmazandó, teljesen analóg
módon, mint a MoveFile, azzal a különbséggel, hogy itt könyvtárakra hivatkozva kell a paramétereket átadnunk. Ne
feledjük, itt is alkalmazhatunk joker karaktereket.
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFolder "C:\Documents and Settings\Makro2", "C:\"
End Sub
A végére maradt, hogy az eddigi példák során kreált példakönyvtárakat törölni. Erre a DeleteFolder metódus való. Mivel
az is analóg módon történik, mint a fájlok törlése esetében, ezért itt már csak egy kis minta programot szolgáltatok,
amely kitörli az összes "Makro"-val kezdődö könyvárat a Documents and Settings-ből.
Sub FileKezeles()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder "C:\Documents and Settings\Makro*"
End Sub