AW: Fehler 400 Dateizugriff
29.09.2013 12:28:09
fcs
Hallo Alex,
warum es bei dir funktioniert wenn du das Makro direkt im VBA-Editor ausführts weiss ich nicht.
Bei mir -unter Excel 2010- gibt es direkt Fehler.
Folgende Sachen sind mir aufgefallen.
1. Wahl des Dateiformats PDF oder VSD
Das Dateiformat wird nur umgeschaltet, wenn die Variable gstrFormat bereits einen Wert hat.
Beim öffnen der Datei hat die Datei aber den Wert "".
Du musst also zusätzlich auch prüfen, ob die Variable = "" ist.
2. Prüfung ob Datei existiert
Statt die Anweisung für den Hyperlink in den Fehler laufen zu lassen ist es besser mit der Dir-Methode zu prüfen, ob die Datei existiert.
3. FollowHyperlink
Hier fehlt ein Ausdruck, auf den sich die Methode bezieht.
FollowHyperlink gibt es in 2 Varianten:
a) als Methode des Workbooks (Arbeitsmappe)
b) als Ereignis in einem Worksheet (Tabelle)
Wenn der Ausdruck fehlt, dann versucht Excel an Hand des aktuellen Zustands etwas passendes zu finden.
Das ist wahrscheinlich der Grund, warum das Makro im Editor funktioniert, direkt von der Programmoberfläche aber nicht.
Du benötigst hier die Methode bezogen auf das Workbook.
Insgesamt sollte man die möglichen Fehler vorab prüfen und entsprechende Aktionen einleiten, statt eine Anweisung einfach in einen Fehler laufen zu lassen.
Gruß
Franz
Hier der angepasste Code, wie er etwa aussehen sollte.
Die Deklaration der globalen Variablen kann natürlich auch in einem anderen allgemeinen Modul erfolgen.
Option Explicit 'am Beginn des Modul - empfehlenswert zur Vermeidung von Fehlern
Public gstrFormat As String, gstrLink As String
Sub PDF_BeiKlick()
If gstrFormat = "VSD" Or gstrFormat = "" Then auswahl "PDF", "VSD"
End Sub
Sub Visio_BeiKlick()
If gstrFormat = "PDF" Or gstrFormat = "" Then auswahl "VSD", "PDF"
End Sub
Sub auswahl(a, b)
Worksheets(1).Shapes(a).IncrementLeft 2
Worksheets(1).Shapes(a).IncrementTop 2
Worksheets(1).Shapes(b).IncrementLeft -2
Worksheets(1).Shapes(b).IncrementTop -2
gstrFormat = a
End Sub
Sub SW22_BeiKlick()
oeffnen ("SW22")
End Sub
'Öffnen der Datei
Sub oeffnen(gstrBand)
Dim strDatei As String
On Error GoTo Fehler
If gstrFormat = "" Then
MsgBox "Bitte erst Format PDF oder VSD wählen"
Else
strDatei = gstrBand & " Astplan." & gstrFormat
gstrLink = ThisWorkbook.Path & "\" & gstrFormat & "\" & strDatei
If Dir(gstrLink) = "" Then
MsgBox "Datei """ & strDatei & """ ist nicht vorhanden!", _
vbInformation + vbOKOnly, "Link öffnen"
Else
ThisWorkbook.FollowHyperlink Address:=gstrLink, NewWindow:=True
End If
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case -2147221014
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Datei: " & strDatei, _
vbInformation vbOKOnly, "Link öffnen"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub