Hallo,
Ich habe hier einen Code von Herrn Lorenz Hölscher ,) der auch sehr gut funktioniert.
Nur würde ich zusätzlich gerne eine bessere Fehlerbehandlung einbauen.
Wenn das Blatt Existiert soll der Code kein neues Worksheet einfügen und wksQuelle wieder schliessen.
Dim wbkQuelle As Workbook
Dim wksQuelle As Worksheet
Dim varPfadDatei As Variant
Dim wksZiel As Worksheet
varPfadDatei = Application.GetOpenFilename("Alle Daten,*.xl*,Text Dateien, *.txt*", 1, "Daten auswählen", , False)
If varPfadDatei = False Then
Exit Sub
End If
Set wbkQuelle = Workbooks.Open(varPfadDatei)
Set wksQuelle = wbkQuelle.Worksheets(1)
Set wksZiel = ThisWorkbook.Worksheets.Add() 'Dieses Blatt wäre aber ganz leer
' ThisWorkbook.Worksheets("Leer").Copy , ThisWorkbook.Worksheets("Leer") 'kann verwendet werden wenn eine Vorlage verwendet werden möchte
Set wksZiel = ActiveSheet
wksZiel.Name = Replace(NurDatei(varPfadDatei), ".xlsx", "")
If ExistiertBlatt(wksZiel.Name) Then
MsgBox "Blatt wurde bereits importiert!", vbCritical, p_cstrAppTitel
wbkQuelle.Close xlDoNotSaveChanges
Exit Sub
Else
wksQuelle.UsedRange.Copy wksZiel.Cells(1, 1)
End If
wbkQuelle.Close xlDoNotSaveChanges
Set wbkQuelle = Nothing
Set wksZiel = Nothing
End Sub
Public Function ExistiertBlatt(strBlattName As String) As Boolean
Dim objBlatt As Object
ExistiertBlatt = False
For Each objBlatt In ThisWorkbook.Sheets
If objBlatt.Name = strBlattName Then
ExistiertBlatt = True
Exit For
End If
Next objBlatt
End Function
Function NurDatei(ByVal strPfadDatei As String) As String
Dim intPos As Integer
intPos = InStrRev(strPfadDatei, "\")
If intPos = 0 Then 'dann war keine Datei darin enthalten
NurDatei = ""
Else
NurDatei = Mid(strPfadDatei, intPos + 1)
End If
End Function
und die functions...
Also wie würde hier eine Fehlerbehandlung aussehen müssen das worksheet.add nicht ausgeführt wird wenn die Datei bereist vorhanden ist und die wksQuelle auch wieder ordnungsgemäß geschlossen wird.
Danke für Eure Hilfe!
Zitat... wenn die Datei bereist vorhanden ist ...
Einen solchen erwarteten Zustand kann man doch prüfen, um dann bedingt von der Prüfung weiterzumachen (Abbrechen, Ersatzwert verwenden, Umgehen).
Eine Fehlerbehandlung sollte überwiegend auf unerwartete und/oder nicht konkret prüfbare Fehlerzustände reagieren. Wenn die Tür zu niedrig ist, würde man doch eher den Kopf einziehen statt sich nachfolgend Schmerztabletten einzuwerfen, u.a. auch, weil es einfach weitergehen kann.
Hallo Eberhard,
eigentlich ist es ja nicht die Datei hab mich verschrieben sondern das worksheet.
Ja verstehe schon was Du sagst nur irgendwie geht das noch nicht ganz nach Wunsch.
Werde weiter probieren )
Gruß
Albert
Zitateigentlich ist es ja nicht die Datei hab mich verschrieben ...
Ja, Deine Beschreibung war mir aus sich alleine heraus nicht logisch auflösbar, und das Hinzufügen von eigenen Interpretationen ist dann so eine Sache.
Empfehlung - Uraltlehre:
Ehe Du Codes hin- und herwirfst, schreibe einen Ablaufplan, also eine Übersicht, was wann warum erfolgen soll. Mit höherem Abstraktionsvermögen gelingt da einiges rein im Kopf, ansonsten nimmt man ein Blatt Papier und macht sich ein Bild mit Linien, Kästchen, Prüfungen usw.
Der Code muss dann nur umsetzen, was man geplant hat.
Hallo,
ZitatEhe Du Codes hin- und herwirfst, schreibe einen Ablaufplan, also eine Übersicht, was wann warum erfolgen soll. Mit höherem Abstraktionsvermögen gelingt da einiges rein im Kopf, ansonsten nimmt man ein Blatt Papier und macht sich ein Bild mit Linien, Kästchen, Prüfungen usw.
Tut mir sehr leid .. dachte wäre ein wenig verständlicher mit Code.
Danke aber für den Hinweis und werde mich bemühen es in Zukunft besser zu machen.
Ist das Problem gelöst oder sind noch Faregn offen?
Hallo Selbi,
ja Danke ich hab es lösen können.
Hat zwar ein wenig gedauert aber immerhin.
Vielen Dank für die Nachfrage!
Gruß
Albert