Hallo Philipp,
bei mir klappt es so:
Ich habe zum testen 2 Dateien (A.xls und B.xls) erzeugt, die sich im gleichen Ordner befinden und geöffnet sind.
In A.xls befinden sich 2 Tabellenblätter (Cover Sheet und TabelleA).
In B.xls befinden sich 2 Tabellenblätter (Cover Sheet und TabelleB).
Nun habe ich zum Testen in A.xls das Blatt "Cover Sheet" im Bereich ("a1:f30") mit "InhaltA" gefüllt.
Den Makrocode habe ich in A.xls im VBA-Editor an das Blatt "Cover Sheet" geheftet.
Um den "worst case" zu simulieren, habe ich per Hand jeweils in den Dateien A.xls und B.xls die Blätter "TabelleA" und "TabelleB" aktiviert und B.xls ist gerade aktiv.
Nun kann man schauen, ob das Makro auch in dem Fall tut was es soll.
Wenn du willst lasse jetzt das Makro schrittweise laufen.
Makrocode:
Sub kopieren()
Workbooks("A").Sheets("Cover sheet").Activate
ActiveSheet.Range("a1:f30").Copy
Workbooks("B").Sheets("Cover sheet").Activate
ActiveSheet.Range("a1").Activate
ActiveSheet.Paste
End Sub
Es kommt nicht darauf an, welche Blätter oder Workbooks vor dem Lauf des Makros aktiviert sind. Mit dem Code sollte es immer gehen. Nur müssen beide Workbooks geöffnet sein und sich im gleichen Ordner befinden - ich habe nur den "worst case" getestet.
Den Button (Befehlsschaltfläche) habe ich in A.xls auf das Blatt "Cover Sheet" eingefügt.
Die Sache mit "Range("A1:F30").Select" und dann "Selection.Copy" ist unnötig, wie du an meinem Code siehst, verzichte ich auf "Select" und kopiere gleich.
Viele Grüße,
Jörg
|