Hallo Gast57615
Vorab noch drei Hinwesie:
-
Normalerweise soll VBA dazu dienen, dass der User weniger eingeben muss und schneller arbeiten kann. Daher kann ich nicht nachvollziehen, weshalb der Dateiname manuell erfasst werden muss. Wäre es nicht einfacher, einfach den Ordner zu öffenen und dann die entsprechende Datei zu wählen?
-
Den User kannst du gleich im Code abfragen über Application.UserName.
-
Beschränkst du dich bewusst auf die Endung xlsx?. Was ist mit Dateien, die Makros enthalten, Vorlagen oder älteren Dateien?
Nun zu deiner Frage:
Wenn eine bestimmte Datei nicht gefunden wird, erzeugt dies immer eine ganz bestimmte Fehlernummer, nämlich die 1004. Diese Fehlernummer kannst du in einem Errorhandling natürlich abfangen. Der vollständige Code sieht dann so aus:
Sub BestimmteDateiOeffnen()
On Error GoTo Errorhandler
Dim user As String, sWb As String
sWb = InputBox("Dateiname eingeben: ")
Workbooks.Open Filename:=("/Users/" & Application.UserName & "/Documents/" & sWb & ".xlsx")
Errorhandler:
If Err.Number = 1004 Then MsgBox "Die Datei konnte nicht gefunden werden."
End Sub
Wie eingangs erwähnt ginge es auch einfacher. Der der Standardpfad gebraucht wird ginge es mit folgendem Pfad vielleicht einfacher:
Sub Dateiwahl()
Dim strDatei
Set strDatei = Application.FileDialog(msoFileDialogFilePicker)
With strDatei
.Title = "Wähle deine Datei..."
.InitialFileName = ThisWorkbook.Path
.Filters.Add "Excel", "*.xls; *.xlsx; *.xlt", 1
If .Show = -1 Then MsgBox .SelectedItems(1)
End With
End Sub
Gruss Daniel
|