Arbeitsblatt in andere Datei verschieben?
Ich möchte aus dem zu öffnenden Workbook das Blatt "Berechnung" (das einzige Blatt) in die aktuelle Datei kopieren. Die schon geöffnete Datei wird in Zukunft allerdings einen anderen Namen haben, deswegen dachte ich, mach ich das mit einem zugewiesenem Namen. Bei Sheets.Select bekomme ich allerdings einen Laufzeitfehler '9': Index außerhalb des Bereichs. Was mache ich falsch?
Dim PEMS
PEMS = ThisWorkbook.Name
Application.DisplayAlerts = False
Workbooks.Open Filename:="Dateipfad", ReadOnly:=True
Application.DisplayAlerts = True
Sheets("Berechnung").Select
Sheets("Berechnung").Copy Before:=Workbooks("PEMS").Sheets(2)
2 Antworten
Heißt die zu öffnende Datei "Dateipfad"? Dann fehlen Laufwerk und Pfad.
Oder ist das eine Variable, die LaufW, DateiPfad und -Namen enthält? dann ohne Anf-Z.
Warum schaltest Du hier Diaplayalerts aus? So siehst du nicht, obs funktioniert!
Wird die Datei denn geöffnet? vermutlich nicht. Weshalb auch das Worksheet nicht gefunden wird. (müsstest du bei Abbruch des Makros sehen)
Ggf musst du vor dem Copy ein
Application.Windows("Dateiname.xlsx").activate (oder wars visible=true?) einfügen.
Ausserdem: Activeworkbook.Worksheets("Berechnung").activate
Bevor Du das in Pems (als Variable ohne Anf-Z) einfügen kannst, musst Du wieder dieses Fenster aktivieren (vllt gehts mit ...Copy destination:=PEMS Before=Sheets(1) oder so ähnlich, habs jetzt nicht ausprobiert.
(vllt ist das ja heute vereinfacht, es war zumindest mal so, glaube ich mich zu erinnern)
danke fürs Kompliment!
Worksheets sind Tabellenblätter, Sheets umfasst auch zB Diagramm-Blätter und was es sonst noch geben könnte (weiß nicht, ob zB Pivot-Tabellen zu Worksheets gehören)
Wenn der Name eindeutig ist, ist Sheets sicherer, aber beim Index kanns schon durcheinander gehen.
danke fürs Kompliment!
Worksheets sind Tabellenblätter, Sheets umfasst auch zB Diagramm-Blätter und was es sonst noch geben könnte. (noch in xl4 zB Makro-Blätter, die auch später noch eine Zeitlang zulässig waren (oder noch sind?)
Weiß nicht, ob zB Pivot-Tabellen zu Worksheets gehören, und auch mit Formularen hatte ich nie zu tun.
Wenn der Name eindeutig ist, ist Sheets sicherer, aber beim Index kanns schon durcheinander gehen.
eine andere Möglichkeit:
- on error resume next
- Workbooks("...").activate (oder windows("...")?)
- if err() > 0 then workbooks("...").open 'vllt auch if ErrNumber > 0
- on error goto 0
Dateipfad hatte ich nur eben reingeschrieben, passt schon. Datei wird auch geöffnet, die Displayalerts hab ich ausgestellt, falls die Datei bereits geöffnet ist.
Tatsächlich! Lag wohl an den Anführungszeichen und dem ActiveWorkbook.
Ne Frage: was ist der Unterschied zwischen .Worksheets und .Sheets?