"Was ich mich schon die ganze Zeit über wundere, ist, dass du einfach die Dateiendung annimmst. Dabei bekommst du die doch beim Lesen des Verzeichnisses automatisch mit. Du müsstest daher ganz genau wissen welche DOCXs und welche PDFs in dem jeweiligen Verzeichnis liegen."
Das verstehe ich nicht, was du hier meinst. Ich habe über eine Liste in meiner Excel-Datei eine Struktur aufgebaut, in der ich händisch eintrage was in welchem Ordner ist und genau das wird mir dann angezeigt. Dabei sind die einzelnen Sachen immer von der vorherigen Auswahl abhängig.
Du Trägst die per Hand also ein? Dann weißt du also nicht, ob eine Datei unter dem angegebenen Namen wirklich existiert.
Wie dem auch sei, dann bauen wir halt eine Abfrage dafür ein:
Neue Funktion - kommt an die selbe Stelle wie dein Code-Schnipsel zuvor:
Private Function FileExists(File As String) As Boolean
FileExists = Dir$(File) <> ""
End Function
Und dein Code-Schnipsel ändert sich wie folgt:
If Me.ComboBox4.ListIndex > -1 And Me.ComboBox5.ListIndex > -1 And Me.ComboBox6.ListIndex > -1 Then
Dim strFilePDF As String
Dim strFileDOCX As String
strFilePDF = "C:\...\" & Me.ComboBox4 & "\" & Me.ComboBox5 & "\" & Me.ComboBox6 & ".pdf"
strFileDOCX = "C:\...\" & Me.ComboBox4 & "\" & Me.ComboBox5 & "\" & Me.ComboBox6 & ".docx"
If FileExists(strFilePDF) Then
With CreateObject("Shell.Application")
Call .Open(strFilePDF)
End With
Else
Call MsgBox("Die PDF-Datei '" & strFilePDF & "' konnte nicht gefunden werden.", vbCritical)
End If
If FileExists(strFileDOCX) Then
Call CopyTableFromWordDocument(strFileDOCX)
Else
Call MsgBox("Die Word-Datei '" & strFileDOCX & "' konnte nicht gefunden werden.", vbCritical)
End If
End If
Es wird dann eine Meldung ausgegeben, wenn eine Datei nicht vorhanden ist. Aber es gibt keinen Laufzeitfehler mehr.
Grüße
|