Funkcja Dir

Funkcja DIR() to funkcja VBA zwracająca wartość tekstową będącą nazwą pliku lub folderu. Bardzo pożyteczna  i często stosowana.

Argumenty funkcji to:

    • PathName– wartość tekstowa odpowiadająca pełnej nazwie pliku lub folderu
    • Attributes – wartość stała lub liczbowa określająca wyszukiwane pliki. Składa się ona z sumy wartości liczbowych z tabeli poniżej.

Atrybuty mogą przyjmować wartości:

Stała Wartość liczbowa Opis
vbNormal 0 Pliki bez właściwości. Wartość domyślna.
vbReadOnly 1 Pliki bez właściwości i pliki tylko do odczytu
vbHidden 2 Pliki bez właściwości i pliki ukryte
vbSystem 4 Pliki bez właściwości i pliki systemowe
vbVolume 8 Etykiety
vbDirectory 16  Foldery

W praktycznym wykorzystaniu funkcja Dir najczęściej stosowana jest do sprawdzania czy istnieje dany folder lub plik oraz do sporządzania listy takich plików.


Kurs Access - programowanie w VBA

 

Kopiowanie pliku

Jak szybko skopiować dowolny plik? Sposobów jest kilka, jednym z nich jest wykorzystanie obiektu FileSystem.Object.
Służy do tego metoda FileSystem.Object.Copy
Ma ona kilka parametrów wejściowych:

    • Object – nazwa obiektu zdefiniowanego jako obiekt FSO. Argument obowiązkowy.
    • Source – nazwa pliku do skopiowania. Argument obowiązkowy, ale dozwolone są znaki zastępcze w  nazwie.
    • Destination – nazwa pliku po skopiowaniu. Argument obowiązkowy.
    • Overwrite – opcjonalny argument typu Boolean. Jeżeli kopiowany plik ma być zapisany pod nazwą już istniejącego pliku, wartość False nie skopiuje pliku. Domyślna wartość True, zastąpi plik plikiem kopiowany.

Przykładowy kod kopiujący plik może wyglądać tak:

Public Sub KopiujPlik()
Dim FSO As Object
Dim KopiowanyPlik As String
Dim
NowyPlik As String
KopiowanyPlik= “C:\Wprawki\PrzykladowaBaza.accdb”
NowyPlik= “C:\NaBlogi\PrzykladowaBaza.accdb”
Set FSO=CreateObject(“Scripting.FileSystemObject”)
FSO.Copy  KopiowanyPlik, NowyPlik, True
Set FSO=Nothing
End Sub

 


FileSystem.Object

Scripting.FileSystemObject to obiekt służący do zarządzania plikami i folderami. Wprawdzie w kodzie VBA są dostępne proste i przyjemne funkcje Dir, MkDir itp., ale przy odwołaniach do folderów sieciowych niestety często zawodzą. Wówczas pozostaje wykorzystanie właśnie obiektu FileSystemObject, popularnie nazywanym FSO.

Dostępne są tu następujące właściwości i metody:

    • GetDrive – informacje o napędzie (dysku)
    • GetFolder – informacje o folderze
    • GetFile– informacje o pliku
    • CreateFolder – tworzenie folderu
    • CreateFile – tworzenie pliku
    • DeleteFolder – usuwanie folderu
    • DeleteFile – usuwanie pliku
    • CopyFolder – kopiowanie folderu
    • CopyFile – kopiowanie pliku
    • MoveFolder – przenoszenie folderu
    • MoveFile – przenoszenie pliku

To tylko te podstawowe, jest ich więcej. I każda będzie tematem notki.


Otwieranie folderu kodem VBA

Jak z poziomu aplikacji otworzyć określony folder na dysku? Sposobów jest kilka, jeden z nich to wykorzystanie funkcji Shell.

Public Sub OtworzFolder()
Dim a
Dim JSciezka As String
JSciezka = “C:\CWICZENIAFORA”
a = Shell(“explorer.exe ” & JSciezka, vbNormalFocus)
End Sub

Po uruchomieniu kodu w aplikacji Access – w oddzielnym oknie Windows otwiera się folder zdefiniowany w zmiennej JSciezka, a kod VBA przechodzi do kolejnego kroku.


Funkcja Shell

Funkcja VBA Shell to funkcja uruchamiająca inny program wykonywalny.
Ma 2 argumenty wejściowe:

    • PathName  – argument obowiązkowy. Wartość typu String określająca nazwę programu do otwarcia;
    • WindowStyle – argument opcjonalny. Wartość typu Integer określająca widok okna uruchomionego programu.
      Dostępne są tu następujące wartości:

      • 0 (vbHide) – okno uruchomionego programu jest ukryte
      • 1 (vbNormalFocus) – okno uruchomionego programu jest widoczne  i ma fokus
      • 2  (vbMinimizedFocus) – okno uruchomionego programu jest widoczne jako ikona i ma fokus
      • 3  (vbMaximizedFocus) – okno uruchomionego programu jest maksymalnie powiększone i ma fokus
      • 4  (vbNormalNoFocus) – okno uruchomionego programu jest widoczne, ale nie ma fokusu
      • 6 (vbMinimizedNoFocus) – okno uruchomionego programu jest widoczne jako ikona i nie ma fokusu

Wartością domyślną jest tu 1 (vbNormalFocus)

W wyniku działania funkcji VBA otrzymujemy wartość typu Variant będącą identyfikatorem numeru zadania uruchomionego programu. Jeżeli uruchomienie programu się nie powiedzie – zwracana jest wartość 0.


Kurs Access - programowanie w VBA

%d bloggers like this: