Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abbrechen der Dateiauswahl

Forumthread: Abbrechen der Dateiauswahl

Abbrechen der Dateiauswahl
17.11.2003 15:54:22
Danni
Hallo zusammen,

mein Problem dreht sich um dieses Auswahlfenster, mit dem ich dem Nutzer die Auswahl einer beliebigen Datei ermöglichen will.
Ich habe diese Zeile in einem Makro.

Application.Dialogs(xlDialogOpen).Show

Problem hierbei:
Wenn der User das Fenster angezeigt bekommt und auf "Abbrechen" klickt, dann flieg ich mit folgender Fehlermeldung aus dem Makro: "Laufzeitfehler 9, Index außerhalb des gültigen Bereichs"
Lieber wär mir natürlich eine Msgbox "Auswahl wurde abgebrochen" o.ä.

Kann mir jemand sagen, wie ich das abfange?!

Danke für die Hilfe,
Danni
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abbrechen der Dateiauswahl
17.11.2003 17:14:51
Nepumuk
Hallo Danni,
der Fehler kommt aber nicht von dem Dialog, sondern vom Code der dem Dialog folgt. Wenn du uns den mal sehen lässt, dann können wir dir sicher weiterhelfen.
Gruß
Nepumuk
AW: Abbrechen der Dateiauswahl
17.11.2003 17:39:19
Danni
Hallo Nepumuk,

danke für's Hilfeangebot. Hier mal ein paar Zeilen des "umliegenden" Codes..

-----------------------------------------------------------------------------------------
Dim WB as Workbook
Dim anz_geplant as Integer

If passw = "passwort_xy" Then

Application.Dialogs(xlDialogOpen).Show
Set WB = ActiveWorkbook
MsgBox "ausgewählte Datei: " & WB.Name 'das funktioniert

'und hier geht's halt weiter mit Zählen der Datensätze der geöffneten Datei
WB.Worksheets("Dokumentationsplanung").Activate
a = 3
While Not IsEmpty(Cells(a, 1))
a = a + 1
Wend
anz_geplant = a - 3

...
-----------------------------------------------------------------------------------------

Das Auswählen der Datei klappt wunderbar, nur wenn ich "Abbrechen" klicke krieg ich w.g. den Fehler...

Wahrscheinlich ist der Fehler die Zeile Set WB = Active.Workbook.
Ich bräuchte vielleicht eine Schleife, die fragt:
If "eine Datei ausgewählt wurde" Then
Set WB = Active.Workbook.
Else
Msgbox "es wurde abgebrochen"
Exit Sub
End If

Danke, Danni
Anzeige
AW: Abbrechen der Dateiauswahl
17.11.2003 17:57:12
Nepumuk
Hallo Danni,
versuch es mal so:


Dim WB As Workbook, varDateiname As Variant
Dim anz_geplant As Integer, myWorksheet As Worksheet, bolgefunden As Boolean
If passw = "passwort_xy" Then
varDateiname = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
If varDateiname = False Then Exit Sub Else MsgBox "ausgewählte Datei: " & CStr(varDateiname), 64, "Information"
Set WB = Workbooks(varDateiname)
For Each myWorksheet In WB.Worksheets
If myWorksheet.Name = "Dokumentationsplanung" Then bolgefunden = True: Exit For
Next
If Not bolgefunden Then Exit Sub
'und hier geht's halt weiter mit Zählen der Datensätze der geöffneten Datei
WB.Worksheets("Dokumentationsplanung").Activate
a = 3
While Not IsEmpty(Cells(a, 1))
a = a + 1
Wend
anz_geplant = a - 3



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: Abbrechen der Dateiauswahl
17.11.2003 18:40:26
Danni
Hey Nepumuk,

genau sowas wollte ich - allerdings funktioniert diese Zeile nicht:
Set WB = Workbooks(varDateiname)

Da krieg ich immer einen Laufzeitfehler) "Index außerhalb des gültigen Bereichs..."

Eine Idee warum??
...Danni
AW: Abbrechen der Dateiauswahl
17.11.2003 19:08:44
Nepumuk
Hallo Danni,
mein Fehler, so geht's:

Dim WB As Workbook, varDateiname As Variant
Dim anz_geplant As Integer, myWorksheet As Worksheet, bolgefunden As Boolean
If passw = "passwort_xy" Then
varDateiname = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
If varDateiname = False Then
Exit Sub
Else
Workbooks.Open varDateiname
varDateiname = Right(CStr(varDateiname), InStr(1, StrReverse(CStr(varDateiname)), "\") - 1)
MsgBox "ausgewählte Datei: " & CStr(varDateiname), 64, "Information"
End If
Set WB = Workbooks(varDateiname)
For Each myWorksheet In WB.Worksheets
If myWorksheet.Name = "Dokumentationsplanung" Then bolgefunden = True: Exit For
Next
If Not bolgefunden Then Exit Sub

Gruß
Nepumuk
Anzeige
AW: Abbrechen der Dateiauswahl
18.11.2003 13:46:27
Danni
Hallo Nepumuk,

danke für die Antwort...
die Datei wird jetzt geöffnet, aber jetzt hängt's hier:
For Each myWorksheet In WB.Worksheets

und zwar mit dieser Fehlermeldung:
"Objektvariable oder With-Blockvariable nicht festgelegt."

Was bedeutet das denn?? Ich habe myWorksheet as Worksheet deklariert...

Danke nochmal, Danni
Anzeige
AW: Abbrechen der Dateiauswahl
18.11.2003 16:49:18
Nepumuk
Hallo Danni,
lass mich mal deinen Code sehen, da ist irgend etwas nicht in Ordnung. Bei mir funktioniert der nämlich einwandfrei.
Gruß
Nepumuk
AW: Abbrechen der Dateiauswahl
19.11.2003 09:04:25
Danni
Hallo Nepumuk,

war gestern leider nicht mehr online, aber hier der Code:
W.g. schmeißt er mich in dieser Zeile raus: For Each myWorksheet In WB.Worksheets

-----------------------------------------------------------------------------------------
Dim WB As Workbook
Dim myWorksheet As Worksheet
Dim varDateiname As Variant
Dim bolgefunden As Boolean

varDateiname = Application.GetOpenFilename("Excel Files (*.xls), *.xls")

If varDateiname = False Then
MsgBox "Die Dateiauswahl wurde abgebrochen."
Exit Sub
Else
Workbooks.Open varDateiname
varDateiname = Right(CStr(varDateiname), InStr(1, StrReverse(CStr(varDateiname)), "\") - 1)

MsgBox "Ausgewählte Datei: " & CStr(varDateiname), 64, "Information"
End If

bolgefunden = False
For Each myWorksheet In WB.Worksheets
If myWorksheet.Name = "Dokumentationsplanung" Then
bolgefunden = True
Exit For
End If
Next
...
-----------------------------------------------------------------------------------------
Danke nochmals, Danni
Anzeige
AW: Abbrechen der Dateiauswahl
19.11.2003 16:53:32
Nepumuk
Hallo Danni,
du musst das Makro von mir schon komplett verwenden. Bei dir fehlt die Zuweisung an die Objektvariable. Nach den Zeilen:

MsgBox "Ausgewählte Datei: " & CStr(varDateiname), 64, "Information"
End If

muss diese Zeile folgen:

Set WB = Workbooks(varDateiname)

Die Variable bolgefunden musst du nicht auf False setzen, das passiert automatisch durch die Dim - Anweisung.
Gruß
Nepumuk
Anzeige
Danke!!! ...schwere Geburt für'n Anfänger...(o.T.)
20.11.2003 09:16:28
Danni
*
;
Anzeige

Infobox / Tutorial

Abbrechen der Dateiauswahl in Excel VBA


Schritt-für-Schritt-Anleitung

Um das Problem beim Abbrechen der Dateiauswahl in Excel VBA zu lösen, kannst du folgenden Code verwenden. Dieser Code zeigt eine MsgBox an, wenn der Benutzer die Auswahl abbricht, und verhindert den Laufzeitfehler:

Dim WB As Workbook
Dim varDateiname As Variant
Dim myWorksheet As Worksheet
Dim bolgefunden As Boolean

varDateiname = Application.GetOpenFilename("Excel Files (*.xls), *.xls")

If varDateiname = False Then
    MsgBox "Die Dateiauswahl wurde abgebrochen."
    Exit Sub
Else
    Workbooks.Open varDateiname
    varDateiname = Right(CStr(varDateiname), InStr(1, StrReverse(CStr(varDateiname)), "\") - 1)
    MsgBox "Ausgewählte Datei: " & CStr(varDateiname), 64, "Information"
End If

Set WB = Workbooks(varDateiname)

For Each myWorksheet In WB.Worksheets
    If myWorksheet.Name = "Dokumentationsplanung" Then
        bolgefunden = True
        Exit For
    End If
Next

Mit diesem Code wird sichergestellt, dass die Variable WB nur gesetzt wird, wenn eine Datei ausgewählt wurde. Andernfalls wird das Makro beendet und eine Nachricht wird angezeigt.


Häufige Fehler und Lösungen

  1. Laufzeitfehler „Index außerhalb des gültigen Bereichs“

    • Ursache: Dieser Fehler tritt auf, wenn Set WB = Workbooks(varDateiname) ausgeführt wird, ohne dass eine Datei ausgewählt wurde.
    • Lösung: Stelle sicher, dass du die Abbruchbedingung wie im obigen Code implementierst.
  2. „Objektvariable oder With-Blockvariable nicht festgelegt“

    • Ursache: Dieser Fehler kann auftreten, wenn WB nicht korrekt zugewiesen wurde.
    • Lösung: Überprüfe, ob die Datei tatsächlich geöffnet wurde, bevor du auf die Worksheets zugreifst.

Alternative Methoden

Eine weitere Möglichkeit, um die Dateiauswahl zu handhaben, ist die Verwendung von Application.GetOpenFilename anstelle von Application.Dialogs(xlDialogOpen).Show. Dies ermöglicht eine einfachere Handhabung des Abbruchs. Der Code bleibt jedoch im Wesentlichen der gleiche.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das die Verwendung des Codes in einem realen Szenario zeigt:

Sub DateiAuswahlBeispiel()
    Dim WB As Workbook
    Dim varDateiname As Variant

    varDateiname = Application.GetOpenFilename("Excel Files (*.xls), *.xls")

    If varDateiname = False Then
        MsgBox "Die Dateiauswahl wurde abgebrochen."
        Exit Sub
    End If

    Set WB = Workbooks.Open(varDateiname)
    ' Hier kannst du weiterarbeiten...
End Sub

Dieses Beispiel zeigt, wie du den Code in einem Sub verwenden kannst, um die Datei auszuwählen und anschließend mit ihr zu arbeiten.


Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Fehler zu vermeiden.
  • Optimiere die Benutzeroberfläche mit benutzerdefinierten Dialogen, um die Benutzererfahrung zu verbessern.
  • Teste deinen Code gründlich, insbesondere die Abbruchbedingungen, um sicherzustellen, dass alle möglichen Benutzeraktionen berücksichtigt werden.

FAQ: Häufige Fragen

1. Frage
Warum erhalte ich bei der Verwendung von Workbooks.Open einen Fehler?
Antwort: Stelle sicher, dass der Dateipfad korrekt ist und die Datei existiert. Überprüfe auch, ob der Benutzer die Auswahl nicht abgebrochen hat.

2. Frage
Kann ich die Dateiauswahl auf andere Dateiformate erweitern?
Antwort: Ja, du kannst die Filter in Application.GetOpenFilename anpassen, um verschiedene Dateitypen zu unterstützen.

3. Frage
Was mache ich, wenn mehrere Dateien ausgewählt werden sollen?
Antwort: Du kannst Application.FileDialog(msoFileDialogFilePicker) verwenden, um mehrere Dateien auszuwählen, und dann eine Schleife verwenden, um jede Datei zu verarbeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige