Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
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

Abbruch , wenn externes Sheet nicht gefunden

Abbruch , wenn externes Sheet nicht gefunden
19.10.2016 14:03:59
jockel

Hallo,
Habe in meiner Mappe ein Sheet "Daten"
In meiner Mappe soll ein externes Sheet (heißt auch "DATEN" ) aus einer externen Datei importiert werden.
Wenn die Funktion gestartet wird, öffnet sich der Dialog und ich kann die Quelle auswählen. Altes Sheet wird vorher gelöscht und neues dann eingefügt, externe Datei dann wieder geschlossen
Das funktioniert alles.
Mein Problem: wenn ich die Funktion starte, wähle über den Dialog eine externe Datei aus , die öffnet sich, aber in dieser Datei gibt es KEIN Sheet "DATEN" dann soll der Code eine Msgbox ausgeben und aus der Funktion austreten
'noch mehr VBA
ChDrive "C:\"
Dateiname = Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xls*),*.xls*")
If Dateiname = False Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open Dateiname
Dateiname = ActiveWorkbook.Name
On Error Resume Next
Set objQuelle = Workbooks(Dateiname)
Set myWs = objQuelle.Sheets("DATEN")
'Hier wollte ich eine Abfrage einbauen, die prüft, ob das
'Sheet "Daten" aus der geöffneten Datei überhaupt da ist.
If Err.Number 0 Then
MsgBox "nix gefunden"
Exit Sub
On Error GoTo 0
'altes löschen
Application.DisplayAlerts = False
Sheets("Daten").Delete
Application.DisplayAlerts = True
'und neues einfügen
myWs.Copy After:=ThisWorkbook.Sheets(1)
objQuelle.Close
Exit Sub
If msg = vbNo Then
Exit Sub
End If
End If
Leider funktioniert das nicht. Der Code merkt zwar wenn in der externen Datei nichts da ist und bricht ab, lade ich aber eine Datei, in der das Sheet vorhanden ist, wird es nicht kopiert.
Kann mir da jemand Helfen, wie ich die Abfrage richtig mache ?
Danke Jockel

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abbruch , wenn externes Sheet nicht gefunden
19.10.2016 14:20:24
Martin
Hallo Jockel,
wie gefällt dir das?
    Dim wbkSheet As Worksheet
For Each wbkSheet In Workbooks(Dateiname).Sheets
If wbkSheet.Name = "DATEN" Then
Set myWs = wbkSheet
Exit For
End If
Next
If myWs Is Nothing Then
MsgBox "Das Blatt 'DATEN' ist nicht vorhanden!", 48, "Fehler"
Exit Sub '?
End If
Die Variable 'objQuelle' brauchst du nicht mehr.
Viele Grüße
Martin
AW: Abbruch , wenn externes Sheet nicht gefunden
19.10.2016 14:54:04
Martin
Hallo Jockel,
mir ist erst hinterher aufgefallen, dass bereits in deinem alten Makro einige Fehler enthalten waren. Jetzt komplett und hoffentlich fehlerfrei:
Sub Makro1()
Dim Dateiname As Variant, objQuelle As Workbook
Dim myWs As Worksheet, wbkSheet As Worksheet
ChDrive "C:\"
Dateiname = Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xls*),*.xls*")
If Dateiname = False Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open Dateiname
For Each wbkSheet In ActiveWorkbook.Sheets
If wbkSheet.Name = "DATEN" Then
Set myWs = wbkSheet
Exit For
End If
Next
If myWs Is Nothing Then
Application.ScreenUpdating = True
MsgBox "Das Blatt 'DATEN' ist nicht vorhanden!", 48, "Fehler"
Exit Sub '?
End If
'altes löschen
Application.DisplayAlerts = False
ThisWorkbook.Sheets("Daten").Delete
Application.DisplayAlerts = True
'und neues einfügen
Set objQuelle = ActiveWorkbook
myWs.Copy After:=ThisWorkbook.Sheets(1)
objQuelle.Close
Application.ScreenUpdating = True
End Sub
Viele Grüße
Martin
Anzeige
Noch weniger Makrocode
19.10.2016 15:04:53
Martin
Hallo Jockel,
ich habe den Code jetzt weiter optimiert, jetzt sind sogar nur noch zwei Objekt-Variablen im Einsatz:
Sub Makro1()
Dim Dateiname As Variant, myWs As Worksheet
ChDrive "C:\"
Dateiname = Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xls*),*.xls*")
If Dateiname = False Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open Dateiname
For Each myWs In ActiveWorkbook.Sheets
If myWs.Name = "DATEN" Then Exit For
Next
If myWs.Name  "DATEN" Then
Application.ScreenUpdating = True
MsgBox "Das Blatt 'DATEN' ist nicht vorhanden!", 48, "Fehler"
Exit Sub '?
End If
'altes löschen
Application.DisplayAlerts = False
ThisWorkbook.Sheets("Daten").Delete
Application.DisplayAlerts = True
'und neues einfügen
myWs.Copy After:=ThisWorkbook.Sheets(1)
myWs.Parent.Close
Application.ScreenUpdating = True
End Sub
Viele Grüße
Martin
Anzeige
Perfekt ...
20.10.2016 09:10:47
Jockel
Hallo Martin,
vielen Dank, funktioniert prima.
Danke für Deine Hilfe und Mühe
Gruß
Jockel
Danke für die Rückmeldung o.w.T.
20.10.2016 09:24:58
Martin
.

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige