Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

FileOpenDialog liefert keinen richtigen Dateipfad

FileOpenDialog liefert keinen richtigen Dateipfad
01.11.2023 13:15:57
Hauke7
Ich versuche aus einer Datei den Inhalt in mein Excel-Sheet zu importieren. Dafür erstelle ich automatisch aus Variablen den Dateinamen, sollte diese Datei nicht existieren öffne ich einen FileOpenDialog um manuell eine Datei auswählen zu können. Jedoch gibt der FileOpenDialog nur "-1.xlsx" als Dateipfad zurück. Was mache ich falsch?
Private Sub cmdStartDataImport_Click()


Dim filePath_CT As Variant
Dim filePath_dRN As Variant
Dim fileDialog As fileDialog
Dim wsTaqmanOptions As Worksheet
Dim Modul As Variant
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim wsDestination As Worksheet


' Import CT-Datei
' Definiere die Dateipfade
Modul = Right([frmModul], 6)
If [frmPrefixDatei1] = 0 Then
filePath_CT = "C:\Users\NP40\Downloads\" & [frmLaufNr] & "_" & Modul & "_" & [frmInstrument] & [frmDateiendung]
Else
filePath_CT = "C:\Users\NP40\Downloads\" & [frmPrefixDatei1] & [frmLaufNr] & "_" & Modul & "_" & [frmInstrument] & [frmDateiendung]
End If

' Datei manuell auswählen wenn diese nicht existiert
If Dir(filePath_CT) = "" Then
MsgBox "Die CT-Rohdaten wurden nicht gefunden und müssen manuell importiert werden."
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker) ' Erstellt ein FileDialog-Objekt
fileDialog.Filters.Clear
fileDialog.Filters.Add "", "*" & [frmDateiendung]
fileDialog.Filters.Add "Alle Dateien", "*.*"
fileDialog.InitialFileName = "C:\Users\NP40\Downloads\*" & [frmLaufNr] & "*" ' Filter auf Dateien mit LaufNr und Dateiendung"
filePath_CT = fileDialog.Show ' Öffnet den Dateiauswahldialog
End If

' Öffnet die ausgewählte Datei (CT-Datei)
Set wbSource = Workbooks.Open(filePath_CT)
Set wsSource = wbSource.Sheets(1) ' Annahme: Daten befinden sich im ersten Arbeitsblatt

' Kopiert die Daten aus der Quelldatei in die aktuelle Datei (CT-Datei)
Set wsDestination = ThisWorkbook.Sheets("CTReport") ' Definiert Ziel-Tabellenblatt
wsDestination.Unprotect "xxx" ' Schreibschutz aufheben
wsDestination.Cells.Clear
wsSource.UsedRange.Copy wsDestination.Cells(1, 1) ' Fügt die Daten ab Zelle A1 ein
wsDestination.Protect "xxx" ' Schreibschutz wieder setzen
' Schließt die Quelldatei ohne zu speichern
wbSource.Close False

'Zurück zu Tabellenblatt Evaluation wechseln
Sheets("Evaluation").Activate

End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FileOpenDialog liefert keinen richtigen Dateipfad
02.11.2023 15:37:39
Yal
Hallo Hauke,

Es liegt daran, dass der FileDialog "False" zurückgibt, wenn keine Datei oder mit Abbrechenabgeschlossen wurde.

Du müsstest zuerst die Gültigkeit der Rückgabe prüfen, bevor versucht wird, die Datei zu öffnen:
 If filePath_CT > False Then

Set wbSource = Workbooks.Open(filePath_CT)
'...
End If
(Achtung: filePath_CT <> False ist in dem Fall nicht mit filePatch_CT = True gleich zu setzen. Wenn eine Datei ausgewählt wurde enthält die Variable einen String, keinen boolean)
oder
If filePath_CT = False Then MsgBox "Keine Datei ausgewählt --> Abbruch.": Exit Sub


Achte auf einem sauberen Einrücken deines Codes. Es erhöht ungemeint die Lesbarkeit und macht einfache Fehler schneller bemerkbar.

VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige