Arbeiten mit Dateien: Unterschied zwischen den Versionen
Pwania (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Dateien kopieren, umbenennen, löschen == FileCopy == Informationen einholen == === FileAttr === Ermittelt bei einer mit 'Open' geöffneten Datei den Mo…“) |
Pwania (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
== Dateien kopieren, umbenennen, löschen == | == Dateien kopieren, umbenennen, löschen == | ||
FileCopy | FileCopy | ||
== Informationen einholen == | == Informationen einholen == | ||
Zeile 7: | Zeile 7: | ||
=== FileAttr === | === FileAttr === | ||
Ermittelt bei einer mit 'Open' geöffneten Datei den Modus, in der sie geöffnet wurde. '''Parameter:''' | Ermittelt bei einer mit 'Open' geöffneten Datei den Modus, in der sie geöffnet wurde. | ||
'''Parameter:''' | |||
* Dateinummer (hier die 1, da 'As #1') | * Dateinummer (hier die 1, da 'As #1') | ||
* Optional: Rückgabetyp, muss '''IMMER''' mit 1 (Standardwert) angegeben (und kann somit weggelassen) werden '''Mögliche Modi (Rückgabewert)''' | * Optional: Rückgabetyp, muss '''IMMER''' mit 1 (Standardwert) angegeben (und kann somit weggelassen) werden | ||
'''Mögliche Modi (Rückgabewert)''' | |||
* Input = 1 | * Input = 1 | ||
* Output = 2 | * Output = 2 | ||
* Random = 4 | * Random = 4 | ||
* Append = 8 | * Append = 8 | ||
* Binary = 32 Open "c:\Temp\Hallo.txt" For Output As #1 Debug.Print FileAttr(1) ' ergibt 2 für 'Output' Close #1 | * Binary = 32 | ||
Open "c:\Temp\Hallo.txt" For Output As #1 | |||
Debug.Print FileAttr(1) ' ergibt 2 für 'Output' | |||
Close #1 | |||
=== Dir === | === Dir === | ||
Zeile 22: | Zeile 31: | ||
==== Existenz prüfen ==== | ==== Existenz prüfen ==== | ||
If Dir("c:\temp\test.txt") = "" Then MsgBox "Die Datei konnte leider nicht gefunden werden!" End If - Wenn die angegebene Datei existiert, wird deren vollständiger Pfad zurückgegeben. - Wenn die Datei nicht gefunden werden konnte, wird eine leere Zeichenkette ("") zurückgegeben. | If Dir("c:\temp\test.txt") = "" Then | ||
MsgBox "Die Datei konnte leider nicht gefunden werden!" | |||
End If | |||
- Wenn die angegebene Datei existiert, wird deren vollständiger Pfad zurückgegeben. | |||
- Wenn die Datei nicht gefunden werden konnte, wird eine leere Zeichenkette ("") zurückgegeben. | |||
==== Dateien in einem Verzeichnis finden ==== | ==== Dateien in einem Verzeichnis finden ==== | ||
In diesem Beispiel wird die 'Dir'-Funktion wie folgt eingesetzt: - Beim ersten Aufruf wird ein Pfad angegeben, der mithilfe des '*'-Platzhalters die Suche nach einer entsprechenden Datei einleitet. - Alle weiteren Aufrufe (in der Do-Schleife) werden ohne Übergabeparameter durchgeführt, wodurch die 'Dir'-Funktion weitere Treffer zu den ursprünglichen Suchkriterien liefert. - Auch hier gilt: Können keine (weiteren) Dateien passend zu den Suchkriterien gefunden werden, liefert die 'Dir'-Funktion eine leere Zeichenkette zurück (""). Public Function FilesInFolder(ByVal strPath As String, ByVal strFileExtension As String) As Collection Dim strFile As String If Right(strPath, 1) <> "\" Then strPath = strPath & "\" End If Set FilesInFolder = New Collection strFile = Dir(strPath & "*." & strFileExtension) Do Until strFile = "" FilesInFolder.Add strPath & strFile strFile = Dir Loop End Function Sub TestFilesInFolder() Dim colFiles As Collection Set colFiles = FilesInFolder("c:\temp", "csv") Debug.Print colFiles.Count End Sub | In diesem Beispiel wird die 'Dir'-Funktion wie folgt eingesetzt: | ||
- Beim ersten Aufruf wird ein Pfad angegeben, der mithilfe des '*'-Platzhalters die Suche nach einer entsprechenden Datei einleitet. | |||
- Alle weiteren Aufrufe (in der Do-Schleife) werden ohne Übergabeparameter durchgeführt, wodurch die 'Dir'-Funktion weitere Treffer zu den ursprünglichen Suchkriterien liefert. | |||
- Auch hier gilt: Können keine (weiteren) Dateien passend zu den Suchkriterien gefunden werden, liefert die 'Dir'-Funktion eine leere Zeichenkette zurück (""). | |||
Public Function FilesInFolder(ByVal strPath As String, ByVal strFileExtension As String) As Collection | |||
Dim strFile As String | |||
If Right(strPath, 1) <> "\" Then | |||
strPath = strPath & "\" | |||
End If | |||
Set FilesInFolder = New Collection | |||
strFile = Dir(strPath & "*." & strFileExtension) | |||
Do Until strFile = "" | |||
FilesInFolder.Add strPath & strFile | |||
strFile = Dir | |||
Loop | |||
End Function | |||
Sub TestFilesInFolder() | |||
Dim colFiles As Collection | |||
Set colFiles = FilesInFolder("c:\temp", "csv") | |||
Debug.Print colFiles.Count | |||
End Sub | |||
== Textdateien ein- und auslesen == | == Textdateien ein- und auslesen == | ||
Public Sub WriteLineIntoTextFile(ByVal strFile As String, ByVal strLine As String) Dim lngFile As Long lngFile = FreeFile Open strFile For Output As #lngFile Print #lngFile, strLine Close #lngFile End Sub Public Function ReadFirstLineFromTextFile(ByVal strFile As String) As String Dim strText As String Dim lngFile As Long lngFile = FreeFile Open strFile For Input As #lngFile Input #lngFile, strText Close #lngFile ReadFirstLineFromTextFile = strText End Function Private Sub Test() WriteLineIntoTextFile "c:\Temp\Hallo.txt", "Hallo" Debug.Print ReadFirstLineFromTextFile("c:\Temp\Hallo.txt") End Sub | Public Sub WriteLineIntoTextFile(ByVal strFile As String, ByVal strLine As String) | ||
Dim lngFile As Long | |||
lngFile = FreeFile | |||
Open strFile For Output As #lngFile | |||
Print #lngFile, strLine | |||
Close #lngFile | |||
End Sub | |||
Public Function ReadFirstLineFromTextFile(ByVal strFile As String) As String | |||
Dim strText As String | |||
Dim lngFile As Long | |||
lngFile = FreeFile | |||
Open strFile For Input As #lngFile | |||
Input #lngFile, strText | |||
Close #lngFile | |||
ReadFirstLineFromTextFile = strText | |||
End Function | |||
Private Sub Test() | |||
WriteLineIntoTextFile "c:\Temp\Hallo.txt", "Hallo" | |||
Debug.Print ReadFirstLineFromTextFile("c:\Temp\Hallo.txt") | |||
End Sub | |||
== Eingebaute Datei-Dialoge == | == Eingebaute Datei-Dialoge == | ||
Zeile 36: | Zeile 102: | ||
=== Beliebige Datei öffnen === | === Beliebige Datei öffnen === | ||
Public Function BrowseToFile() As String Dim dlg As FileDialog Set dlg = Application.FileDialog(msoFileDialogFilePicker) dlg.Title = "Datei wählen" dlg.InitialFileName = "C:\temp\" <span style="Color:green">' Wenn nur ein Pfad angegeben wird, wird hiermit begonnen</span> dlg.AllowMultiSelect = False <span style="Color:Green">' Eigene Dateifilter verwenden:</span> dlg.Filters.Clear dlg.Filters.Add "Meine Dateien", "*.pwf" dlg.Filters.Add "Alle Dateien", "*.*" dlg.Show If dlg.SelectedItems.Count > 0 Then BrowseToFile = dlg.SelectedItems.Item(1) End If Set dlg = Nothing End Function | Public Function BrowseToFile() As String | ||
Dim dlg As FileDialog | |||
Set dlg = Application.FileDialog(msoFileDialogFilePicker) | |||
dlg.Title = "Datei wählen" | |||
dlg.InitialFileName = "C:\temp\" <span style="Color:green">' Wenn nur ein Pfad angegeben wird, wird hiermit begonnen</span> | |||
dlg.AllowMultiSelect = False | |||
<span style="Color:Green">' Eigene Dateifilter verwenden:</span> | |||
dlg.Filters.Clear | |||
dlg.Filters.Add "Meine Dateien", "*.pwf" | |||
dlg.Filters.Add "Alle Dateien", "*.*" | |||
dlg.Show | |||
If dlg.SelectedItems.Count > 0 Then | |||
BrowseToFile = dlg.SelectedItems.Item(1) | |||
End If | |||
Set dlg = Nothing | |||
End Function | |||
=== Verzeichnis bestimmen === | === Verzeichnis bestimmen === | ||
Public Function BrowseToPath() As String Dim dlg As FileDialog Set dlg = Application.FileDialog(msoFileDialogFolderPicker) dlg.Title = "Zielverzeichnis wählen" dlg.InitialFileName = "C:\temp\" dlg.Show If dlg.SelectedItems.Count > 0 Then BrowseToPath = dlg.SelectedItems.Item(1) End If End Function | Public Function BrowseToPath() As String | ||
Dim dlg As FileDialog | |||
Set dlg = Application.FileDialog(msoFileDialogFolderPicker) | |||
dlg.Title = "Zielverzeichnis wählen" | |||
dlg.InitialFileName = "C:\temp\" | |||
dlg.Show | |||
If dlg.SelectedItems.Count > 0 Then | |||
BrowseToPath = dlg.SelectedItems.Item(1) | |||
End If | |||
End Function |
Version vom 10. Oktober 2018, 16:32 Uhr
Dateien kopieren, umbenennen, löschen
FileCopy
Informationen einholen
FileAttr
Ermittelt bei einer mit 'Open' geöffneten Datei den Modus, in der sie geöffnet wurde.
Parameter:
- Dateinummer (hier die 1, da 'As #1')
- Optional: Rückgabetyp, muss IMMER mit 1 (Standardwert) angegeben (und kann somit weggelassen) werden
Mögliche Modi (Rückgabewert)
- Input = 1
- Output = 2
- Random = 4
- Append = 8
- Binary = 32
Open "c:\Temp\Hallo.txt" For Output As #1 Debug.Print FileAttr(1) ' ergibt 2 für 'Output' Close #1
Dir
Die 'Dir'-Funktion kann verwendet werden, um festzustellen, ob eine gesuchte Datei oder ein Datei-Ordner existiert, oder sie kann mithilfe von Platzhaltern nach Dateien suchen.
Existenz prüfen
If Dir("c:\temp\test.txt") = "" Then MsgBox "Die Datei konnte leider nicht gefunden werden!" End If
- Wenn die angegebene Datei existiert, wird deren vollständiger Pfad zurückgegeben. - Wenn die Datei nicht gefunden werden konnte, wird eine leere Zeichenkette ("") zurückgegeben.
Dateien in einem Verzeichnis finden
In diesem Beispiel wird die 'Dir'-Funktion wie folgt eingesetzt: - Beim ersten Aufruf wird ein Pfad angegeben, der mithilfe des '*'-Platzhalters die Suche nach einer entsprechenden Datei einleitet. - Alle weiteren Aufrufe (in der Do-Schleife) werden ohne Übergabeparameter durchgeführt, wodurch die 'Dir'-Funktion weitere Treffer zu den ursprünglichen Suchkriterien liefert. - Auch hier gilt: Können keine (weiteren) Dateien passend zu den Suchkriterien gefunden werden, liefert die 'Dir'-Funktion eine leere Zeichenkette zurück ("").
Public Function FilesInFolder(ByVal strPath As String, ByVal strFileExtension As String) As Collection Dim strFile As String If Right(strPath, 1) <> "\" Then strPath = strPath & "\" End If Set FilesInFolder = New Collection strFile = Dir(strPath & "*." & strFileExtension) Do Until strFile = "" FilesInFolder.Add strPath & strFile strFile = Dir Loop End Function
Sub TestFilesInFolder() Dim colFiles As Collection Set colFiles = FilesInFolder("c:\temp", "csv") Debug.Print colFiles.Count End Sub
Textdateien ein- und auslesen
Public Sub WriteLineIntoTextFile(ByVal strFile As String, ByVal strLine As String) Dim lngFile As Long lngFile = FreeFile Open strFile For Output As #lngFile Print #lngFile, strLine Close #lngFile End Sub
Public Function ReadFirstLineFromTextFile(ByVal strFile As String) As String Dim strText As String Dim lngFile As Long lngFile = FreeFile Open strFile For Input As #lngFile Input #lngFile, strText Close #lngFile ReadFirstLineFromTextFile = strText End Function
Private Sub Test() WriteLineIntoTextFile "c:\Temp\Hallo.txt", "Hallo" Debug.Print ReadFirstLineFromTextFile("c:\Temp\Hallo.txt") End Sub
Eingebaute Datei-Dialoge
Beliebige Datei öffnen
Public Function BrowseToFile() As String Dim dlg As FileDialog Set dlg = Application.FileDialog(msoFileDialogFilePicker) dlg.Title = "Datei wählen" dlg.InitialFileName = "C:\temp\" ' Wenn nur ein Pfad angegeben wird, wird hiermit begonnen dlg.AllowMultiSelect = False ' Eigene Dateifilter verwenden: dlg.Filters.Clear dlg.Filters.Add "Meine Dateien", "*.pwf" dlg.Filters.Add "Alle Dateien", "*.*" dlg.Show If dlg.SelectedItems.Count > 0 Then BrowseToFile = dlg.SelectedItems.Item(1) End If Set dlg = Nothing End Function
Verzeichnis bestimmen
Public Function BrowseToPath() As String Dim dlg As FileDialog Set dlg = Application.FileDialog(msoFileDialogFolderPicker) dlg.Title = "Zielverzeichnis wählen" dlg.InitialFileName = "C:\temp\" dlg.Show If dlg.SelectedItems.Count > 0 Then BrowseToPath = dlg.SelectedItems.Item(1) End If End Function