Anzeige
Archiv - Navigation
1796to1800
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

Copy_Methode in nicht aktivem Workbook

Copy_Methode in nicht aktivem Workbook
01.12.2020 12:11:30
Sybot
Hallo,
ich habe folgendes Problem: Ich habe zwei Mappen mit Makros. Das Makro in Mappe 1 soll das Makro in Mappe 2 starten. In dem Makro in Mappe 2 soll ein Sheet ans Ende von Mappe 2 kopiert werden. Wenn ich Mappe 2 mit Workbooks.open(...) öffne, funktioniert das wunderbar. Wenn ich aber Mappe 2 mit GetObject(...) öffne (um die Mappe im HIntergrund zu öffnen), gibt es ein Problem mit der Copy-Methode.
Weiß irgendjemand, ob man das mit der GetObject(...) irgendwie hinkriegen kann?
Vielen Dank.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Copy_Methode in nicht aktivem Workbook
01.12.2020 13:38:52
ChrisL
Hi
Ja, m.W. bekommt man das auch mit GetObject irgendwie hin.
Da du nicht schreibst was das Problem ist und auch keinen Code zeigst, habe ich mich auf die Beantwortung deiner Frage beschränkt.
cu
Chris
AW: Copy_Methode in nicht aktivem Workbook
01.12.2020 15:09:45
Yal
Hallo zusammen,
ein Schreibvorgang führt zwangsläufig zu einer Reservierung der Datei auf Ebene der Speichersystem.
Es ist so oder so ein "Öffnen".
Excel kann nicht, im ggt einer Datenbank, Daten in einer Datei auf dem Festplatte reinschreiben, ohne diese vorher vollständig öffnen.
Seit .. xl2007(?) ist der Excel-Dateiformat eh ein komprimierte XML. Also alles was eingefügt wird, muss VOR irgendeinen Abschluss XML-Tag erfolgen.
Leichter wäre, mehrere, getrennte, kleinere Excel-Dateien zu schreiben.
Oder auf Datenbank zu wechseln.
Viel Erfolg
Yal
Anzeige
AW: Copy_Methode in nicht aktivem Workbook
01.12.2020 16:50:12
Sybot
Hi,
schonmal Danke. Hier eine verkürzete Version des Codes:
in Mappe 1:
Sub mappe1()
Dim wbkMappe2 As Workbook
Set wbkMappe2 = GetObject(ThisWorkbook.Path & "\Mappe 2.xlsm")
Application.Run "'" & wbkMappe2.Name & "'!mappe2"
End Sub

in Mappe 2:
Sub mappe2()
Dim wksTab2 As Worksheet
Set wksTab2 = ThisWorkbook.Worksheets("Tabelle2")
wksTab2.Visible = xlSheetVisible
wksTab2.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
wksTab2.Visible = xlSheetHidden
End Sub

Die Fehlermeldung lautet :
Laufzeitfehler '1004' :
Die Methode 'Copy' für das Objekt'_Worksheet' ist fehlgeschlagen

Wiegesagt, wenn ich statt
Set wbkMappe2 = GetObject(ThisWorkbook.Path & "\Mappe 2.xlsm")
es so schreibe
Set wbkMappe2 = Workbooks.Open(ThisWorkbook.Path & "\Mappe 2.xlsm")
dann funktioniert es.
Vielen Dank im Voraus
Anzeige
AW: Copy_Methode in nicht aktivem Workbook
01.12.2020 17:06:56
Yal
Hallo Sybot,
ich bin mit GetObject nicht erfahren, aber wenn Mappe2 nicht als vollständigen Workbook geöffnet wird, gilt überhaupt den Marker "ThisWorkbook"?
Ich würde im Schritt-Modus laufen lassen und die Variablen-Zustand in der lokalen Fenster beobachten.
Viel Erfolg
Yal
AW: Copy_Methode in nicht aktivem Workbook
02.12.2020 09:02:08
Sybot
Hi Yal,
ja, das mit ThisWorkbook war auch meine erste Idee, aber das funktioniert. Aber es scheint so, als ob die Copy-Methode nur im jeweils aktiven Fenster funktioniert. Also bleibt mir wohl nichts weiter übrig, als die Dateien sich normal öffnen zu lassen.
Trotzdem Danke
Sybot
Anzeige
AW: Copy_Methode in nicht aktivem Workbook
01.12.2020 17:12:05
ChrisL
Hi
Wie es der Zufall will, war ich soeben am Testen und Copy scheint zwischen zwei Instanzen tatsächlich nicht zu funktionieren.
Aber nur um die Datei "versteckt" zu öffnen, brauchst du nicht extra eine zweite Instanz machen. Vor dem Öffnen Application.ScreenUpdating=False und die Mappe Visible=False setzen.
cu
Chris
AW: Copy_Methode in nicht aktivem Workbook
02.12.2020 08:58:55
Sybot
Hallo Chris,
danke für deine Antwort. Das mit
Application.ScreenUpdating = False

alleine funktioniert nicht. Und, wenn ich ich nach dem Öffnen
ActiveWindow.Visible = False

schreibe, habe ich das gleiche Problem wie mit GetObject(). Die Copy-Methode scheint immer nur in der aktiven Mappe zu funktionieren. In meinem Code habe ich statt einer Mappe2 mehrere und deshalb ist das ständige Auf- und Zumachen der Mappen sehr nervig und ich hätte mir auch Geschwindigkeitsverbesserungen dadurch erhofft.
Anzeige
AW: Copy_Methode in nicht aktivem Workbook
02.12.2020 09:55:28
ChrisL
Hi
Sehe das Problem nicht...
Sub t()
Dim wb1 As Workbook
Dim wb2 As Workbook
Application.ScreenUpdating = False
Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\Mappe2.xlsx")
wb2.Windows(1).Visible = False
wb2.Worksheets("Tabelle1").Copy after:=wb1.Sheets(wb1.Sheets.Count)
End Sub
cu
Chris
AW: Copy_Methode in nicht aktivem Workbook
02.12.2020 10:47:46
Sybot
Hi,
der Copy-Befehl steht in dem Makro von Mappe 2.
Gruß
Saybot
AW: Copy_Methode in nicht aktivem Workbook
02.12.2020 11:34:23
ChrisL
so what...
Sub t()
Dim wb1 As Workbook
Dim wb2 As Workbook
Application.ScreenUpdating = False
Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\Mappe2.xlsm")
Application.Run "'" & wb2.FullName & "'!Mach", wb1
wb2.Windows(1).Visible = False
End Sub

Sub Mach(wb As Workbook)
ThisWorkbook.Worksheets("Tabelle1").Copy after:=wb.Sheets(wb.Sheets.Count)
End Sub

Anzeige
AW: Copy_Methode in nicht aktivem Workbook
02.12.2020 11:50:24
Sybot
Ja, wenn man das nach dem Aufruf des Makros in Mappe2 schreibt, dann öffnet er ja trotzdem Mappe2 und lässt das Makro durchlaufen, bevor die Mappe ausgeblendet wird (das Makro in meiner Originaldatei von Mappe2 dauert ungefähr 5 Sekunden, somit ist für diese Zeit immer Mappe2 im Vordergrund). Außerdem soll die Seite in wb2 in deinem Beispiel kopiert werden, nicht wb1.
Egal, ich habe mich jetzt damit abgefunden, dass es wohl leider so, wie ich das will, nicht funktioniert.
Trotzdem vielen Dank für deine Mühe
Gruß
Saybot

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige