Jedną z ciekawszych rzeczy, które można robić dzięki makrom to edytowanie innych plików. Plik można otworzyć do odczytu, lub do zapisu. Poniższy Listing przedstawia procedurę, która zapisuje do pliku C:\Temp\Liczby.txt kolejne liczby znajdujące się w komórkach A1:A10 w aktywnym arkuszu.
Sub PlikZapis()
Dim a As Long
Dim Liczba As Single
Open "C:\Temp\Liczby.txt" For Output As #1
For a = 1 To 10
Liczba = Cells(a, 1)
Print #1, Liczba
Next a
Close #1
End Sub
Instrukcja Open otwiera plik. Parametr Output określa, że plik zostanie otworzony do zapisu i jeśli wcześniej plik istniał, to zostanie nadpisany. Gdybyśmy zamiast Output użyli parametru Append, to w przypadku istnienia pliku dane zostaną dopisane na jego końcu. Parametr #1 oznacza numer uchwytu (gdybyśmy chcieli operować na kilku plikach jednocześnie, to podczas otwierania kolejnego pliku należy mu nadać kolejny numer). Następnie w pętli for odczytujemy wartość aktualnej komórki a instrukcja Print zapisuje wartość do pliku. Na końcu instrukcja Close zamyka plik i zwalnia zasoby.
Odczytanie danych z plików jest równie proste. Poniższy Listing przedstawia procedurę, która odczytuje 10 pierwszych liczb z pliku i wstawia je do kolejnych komórek. Instrukcja Open otwiera plik. Parametr Input oznacza, że otwieramy plik do odczytu. Następnie w pętli for za pomocą instrukcji Input odczytujemy kolejne wartości, które wstawiamy do kolejnych komórek. Na końcu instrukcja Close zamyka plik i zwalnia zasoby.
Sub OdczytPlik()
Dim a As Long
Dim Liczba As Single
Open "C:\Temp\Liczby.txt" For Input As #1
For a = 1 To 10
Input #1, Liczba
Cells(a, 1) = Liczba
Next a
Close #1
End Sub
Oprócz odczytywania danych z plików i zapisywania do plików można również wykonywać czynności administracyjne:
Sub OperacjeNaPlikach()
'Skopiuj plik
FileCopy "c:\temp\plik.txt", "c:\temp\plik2.txt"
FileCopy "c:\temp\plik.txt", "d:\plik.txt"
'Zmiana nazwy pliku
Name "c:\temp\plik2.txt" As "c:\temp\nowa_nazwa.txt"
'Przenieś plik do innego folderu
Name "c:\temp\nowa_nazwa.txt" As "d:\nowa_nazwa.txt"
'Skasuj plik
Kill "d:\nowa_nazwa.txt"
'W folderze c:\temp utwórz nowy pusty folder
ChDrive ("c:\") 'Zmień dysk na C:\
ChDir ("c:\temp") 'Przejdź do folderu c:\temp
MkDir "Nowy pusty folder"
'lub
MkDir ("c:\temp\Nowy pusty folder2")
'Zmień nazwę folderu
Name "c:\temp\Nowy pusty folder2" As "c:\temp\Nowy pusty folder2-2"
'Usuń folder (można kasować tylko puste foldery)
RmDir ("c:\temp\Nowy pusty folder2-2")
'Uruchom program kalkulator
Shell "calc.exe"
'Sprawdź czy istnieje plik
If Dir("c:\temp\plik.txt") <> "" Then MsgBox "Plik istnieje", vbInformation
'Sprawdź czy istnieje folder (musi być na końcu znak \ !!)
If Dir("c:\temp\") <> "" Then MsgBox "Folder temp istnieje", vbInformation
End Sub