das Makro ist in LibreOffice (Version 7) geschrieben und getestet worden;)
Aber... die Verwendung des Dispachers und der Zwischenablage kann manchmal tückisch sein... ist leider nicht immer klar, was da drin ist

Das was Du siehst ist offensichtlich folgendes: Du hast den Code (vielleicht aus dem Forum) kopiert und über die Zwischenablage in Dein Dokument eingefügt.
Dann das Makro gestartet - und da ist eben auch noch der Code in der Zwischenablage - und der wurde in die Startzelle (A1) eingefügt;)
Tia, ja, das sind so die Tücken...hihi.
Aber... geben wir dem Makro etwas Zeit, alles richtig zu machen.
Code: Alles auswählen
function CopyTabToNewDoc(oSheet as object, oDoc as object, oZielDoc as object)
DIM oFrame1 as variant, oFrame2 as variant
Dim oZelle as variant
Dim oDispatcher as variant
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDoc.CurrentController.Frame.ContainerWindow.setFocus 'nimmt den Focus vom Button! (Formular)
REM Das zu kopierende Tabellenblatt wird markiert
oDoc.CurrentController.Select(oSheet)
wait( 1000 ) 'eine Sekunde warten um dem Makro Zeit zu geben.....
oFrame1 = oDoc.CurrentController.Frame
REM Use a dispatch to copy to the clipboard.
oDispatcher.executeDispatch(oFrame1, ".uno:Copy", "", 0, Array())
REM Upper left corner of where to paste the data.
oZelle = oZielDoc.Sheets(0).getCellRangeByName("A1")
REM Place the view cursor there then paste the clipboard.
oZielDoc.CurrentController.Select(oZelle)
oFrame2 = oZielDoc.CurrentController.Frame
oDispatcher.executeDispatch(oFrame2, ".uno:Paste", "", 0, Array())
REM Cursor setzen in Zelle A1 des Zieldokumentes
oZielDoc.CurrentController.Select(oZelle)
end function
die Zeile "oFrame1 = oDoc.CurrentController.Frame" habe ich verschoben!
Wenn alles bei Dir gut funktioniert, kannst Du auch die wait-Funktion etwas reduzieren - wahrscheinlich reichen auch 500 oder sogar 200 (Millisekunden). Hängt aber auch von dem Rechner etc ab ... also besser großzügig bleiben;)
Viele Grüße
Tom