Hallo ihr lieben,
ich habe ein Problem unter Excel 2002.
Ich habe zwei Dateien (Datei1 und Datei2). In Datei1 wird nur eine UserForm laufen über die die Nutzer Daten aus Datei2 auslesen können bzw. einspeichern können. Datei2 kommt also nur im Hintergrund zum Einsatz und wird von den Nutzern nie direkt gesehen oder geändert.
Die Daten werden immer jahresweise bearbeitet. D.h. ich habe in Datei2 für jedes Jahr ein eigenes Tabellenblatt (immer derselbe Aufbau) und je nach dem welches Jahr der Nutzer in der UserForm ausgewählt hat werden die Daten auf das entsprechende Blatt eingetragen / ausgelesen.
Da ich die Datei nicht für alle Zeit schon vorbereiten kann heißt dies, dass für die letzten drei Jahre und die nächsten 2 Jahre immer entsprechende Blätter vorhanden sein müssen. Sobald ein neues Jahr hinzukommen soll (oder die Dateien erstmalig benutzt werden) soll ein Verantwortlicher (über eine weitere UserForm) neue Jahre (Tabellenblätter) hinzufügen (erzeugen) können.
Dazu braucht er nur das Jahr auswählen, welches er jetzt neu haben möchte, eine Schaltfläche klicken und über diese Schaltfläche soll per Code dann in Datei2 ein neues Tabellenblatt erstellt werden.
Da die Tabellenblätter vom Aufbau alle genauso aussehen habe ich mir überlegt dass es eigentlich einfach wäre wenn ein Muster-Tabellenblatt vorhanden ist und dieses Blatt nur kopiert wird, hinten angefügt (oder wie auch immer; das ist nicht wichtig) und als Namen das entsprechende Jahr erhalten soll.
Soweit zur Theorie. In der Praxis bringt das Programm jedoch nicht die besten Ergebnisse
txtJahr.Text enthält das hinzufügende Jahr.
Sub Schaltfläche\_Click()
Dim wb As Workbook, vorhanden As Boolean
Pfad = "G:\Arbeit\"
Datei = "Anschreibeliste.xlsx"
Set wb = GetObject(Pfad & Datei)
'überprüft, ob Tabellenblatt schon vorhanden ist
For Each ws In wb.Worksheets
If ws.Name = txtJahr.Text Then
vorhanden = True
End If
Next
If vorhanden = False Then
wb.Sheets("Original").Copy After:=Worksheets(1)
wb.Sheets(wb.Sheets.Count).Name = txtJahr.Text
End If
wb.Close SaveChanges:=True
End Sub
Nun passiert folgendes: bis zum „if vorhanden = False“ funktioniert erst einmal alles. Mit der Copy-Zeile kopiert er zwar das Tabellenblatt, fügt es aber in Datei 1 ein und nicht in Datei2 (wo es hin soll).
Jetzt dachte ich mir: halt, bei „After:=“ fehlt noch das „wb“ für Datei2. Wenn ich jetzt den Code laufen lasse kommt bereits hier eine Fehlermeldung (Laufzeitfehler 1004: Die Copy-Methode des Worksheets-Objekts konnte nicht ausgeführt werden").
Wo habe ich hier einen (Denk-)Fehler?
LG Tobi@s