Allgemeines über VBA-Universallösungen
So wird ein Pfadname auf Gültigkeit überprüft
So wird eine Arbeitsmappe geöffnet
So wird eine Arbeitsmappe gespeichert
Diese Seite ist in Bearbeitung! |
Allgemeines über VBA-Universallösungen
Mit "Universallösungen" sind Lösungen gemeint, die unverändert übernommen und universell eingesetzt werden können. Die auf dieser Seite vorgestellten Lösungen erledigen ganz bestimmte, in sich abgeschlossene Aufgaben (und zwar unter Berücksichtigung sämtlicher potentiellen Problemsituationen), enthalten Eingabevalidierungen und Fehlerbehandlungsroutinen.
In einer professionellen Anwendung genügt es
beispielsweise nicht, eine Arbeitsmappe mit der Anweisung "Workbooks.Open
<Dateiname>" zu öffnen und dabei allfällige Laufzeitfehler einfach zu
unterdrücken oder nur eine eigene Fehlermeldung auszugeben, dass die gewünschte Datei
nicht geöffnet werden konnte. Die auf dieser Seite angebotene Universallösung zum
Öffnen einer Arbeitsmappe zeigt, wie man eine Mappe "richtig" öffnet. Die
Lösung enthält daher viel zusätzlichen Programmcode, wie unter anderem Überprüfungen,
- ob das angegebene Laufwerk existiert
- ob das angegebene Verzeichnis existiert
- ob die zu öffnende Datei vorhanden ist
- ob die zu öffnende Datei wirklich eine Exceldatei ist
- und so weiter...
Verwandte Themen |
|
So wird ein Pfadname auf Gültigkeit überprüft
Bevor und auch während...
-
Vorangestellte und angehängte Leerzeichen entfernen
- Unerlaubte Zeichen prüfen
strPath = Trim$(strPath)
For intCounter = 1 To Len(strPath)
If InStr("<>*?|""", Mid$(strPath, intCounter, 1)) Then
MsgBox "Unerlaubtes Zeichen: " & Mid$(strPath,
intCounter, 1)
Exit Sub
End If
Next intCounter
Zum Kopieren
einer Datei muss man Programmcode für folgende Punkte schreiben:
- Wurde die zu kopierende Datei angegeben?
- Existiert die zu kopierende Datei?
- Wurde der Zielpfad angegeben?
- Existiert das Ziellaufwerk?
- Ist das Ziellaufwerk bereit?
- Existiert der Zielordner?
- Muss der Zielordner zuerst angelegt werden?
- Gibt es im Zielordner bereits eine gleichnamige Datei?
- Wenn ja, soll diese ersetzt werden?
- Wenn ja, ist sie nicht in Bearbeitung?
- Wenn ja, ist sie schreibgeschützt?
- Besitzt der Benutzer Schreibrechte für den Zielordner?
- Ist die zu kopierende Datei nicht in Bearbeitung?
- Besitzt das Ziellaufwerk genügend freien Speicherplatz?
Zum Löschen
einer Datei muss man Programmcode für folgende Punkte schreiben:
- Wurde die zu löschende Datei angegeben?
- Existiert die zu löschende Datei?
- Ist die zu löschende Datei nicht in Bearbeitung?
- Ist die zu löschende Datei nicht schreibgeschützt?
- Soll die zu löschende Datei in den Papierkorb verschoben werden?
- Besitzt der Benutzer Löschrechte für die Datei?
So wird eine Arbeitsmappe geöffnet
Bevor und auch während eine Arbeitsmappendatei mit "Workbooks.Open <Datei.xls>" geöffnet wird, muss man ein paar Entscheidungen treffen, die aktuelle Arbeitsumgebung prüfen sowie sämtliche Datei-Zugriffsfehler abfangen, analysieren und behandeln.
Vor dem
Ausführen der Open-Methode sollte man daher prüfen,
- ob die Datei bereits in der aktuellen Excel-Instanz geöffnet ist,
- ob das angesprochene Gerät verfügbar ist,
- ob der angesprochene Datenträger bereit ist,
- ob das angegebene Laufwerk existiert,
- ob das angegebene Verzeichnis existiert,
- ob die zu öffnende Datei existiert,
- ob die Datei bereits von Ihnen selbst in einer anderen Excel-Instanz geöffnet
ist,
- ob die Datei gerade von einem anderen Benutzer bearbeitet wird,
- ob die Datei von einem anderen Programm oder Prozess gesperrt wird,
- ob die benötigten Zugriffsrechte zum Öffnen vorhanden sind und
- ob die Datei das Attribut "Schreibgeschützt" besitzt.
Erst nachdem diese Prüfungen durchgeführt worden sind, kann man davon ausgehen, dass man in der Lage ist, die gewünschte Datei zu öffnen. Aber aufgepasst: Öffnen sollte man die Datei immer noch nicht!
Substitute-Verzeichnisse
UNC-Pfade
Pfad aus einem Pfad-/Datei-String auslesen
UNC-Pfade
MsgBox Left$(strFile, Len(strFile) - Len(Dir(strFile)) - 1)
Ist die Datei in der aktuellen Excel-Instanz bereits geöffnet?
Sub
IsBookOpen()
Dim wkbBook As Workbook
On Error Resume Next
Set wkbBook = Workbooks("MeineMappe.xls")
If Err.Number = 9 Then
MsgBox "Mappe ist nicht offen."
Else
MsgBox "Mappe ist offen."
Set wkbBook = Nothing
End If
End Sub
Ist das anzusprechende Gerät verfügbar?
So wird eine Arbeitsmappe gespeichert
Empfehlung
Speichern Sie eine Arbeitsmappe nie direkt auf eine Diskette.
Ist das Diskettenlaufwerk bereit?
Sub
IsDiskDriveReady()
If
CreateObject("Scripting.FileSystemObject").GetDrive("A:").IsReady =
True Then
MsgBox "Laufwerk A: ist bereit."
Else
MsgBox "Laufwerk A: ist nicht bereit."
End If
End Sub
Ist das Laufwerk ein CD-ROM-Laufwerk?
If
CreateObject("Scripting.FileSystemObject").GetDrive("E:").DriveType =
4 Then
MsgBox "Laufwerk E: ist ein CD-ROM-Laufwerk."
End If
Wie gross ist die Arbeitsmappendatei?
MsgBox FileLen(ThisWorkbook.FullName)
Wie gross ist der verfügbare Speicherplatz auf der Diskette?
Sub
ShowFloppySpace()
MsgBox
CreateObject("Scripting.FileSystemObject").GetDrive("A:").AvailableSpace
' oder
MsgBox
CreateObject("Scripting.FileSystemObject").GetDrive("A:").FreeSpace
End Sub
Wie lang ist der Pfad-/Dateiname?
MsgBox Len(ThisWorkbook.FullName)
Zuletzt aktualisiert am
20.05.2005 / 17:30 Uhr
© 2002-2005 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten