Bereich kopieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Ein__Stadtmensch
***
Beiträge: 61
Registriert: Do, 18.12.2003 10:08

Bereich kopieren

Beitrag von Ein__Stadtmensch »

Hallo,

ist es möglich einen ganzen Bereich in einem Writer-Dokument in ein anderes Writer-Dokument zu kopieren?
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Stadtmensch,

per Makro?
Selbstverständlich.
Stichpunktartig: Coursor erstellen - Bereich markieren, auslesen, in Variable speichern, neues Dokument öffnen, aktivieren, Cursor erstellen und plazieren, Inhalt der Variablen an Cursor-Position eingeben.

Soviel zum Vorgehen. Jetzt fehlt der Code.
Wenn du schon was hast und nicht weiterkommst - posten.
Dann kann man bestimmt helfen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
mitschel
Beiträge: 5
Registriert: Mo, 22.12.2003 11:12

Beitrag von mitschel »

Hallo!

Ich habe genau das gleiche Problem! Ich möchte einen, mit der maus markierten text in ein neues dokument schreiben! leider liefert mir die letzte code zeile immer eine illegal argument exception... kann mir von euch jemand helfen?

Code: Alles auswählen

sub CopyPaste

 Dim Args(0) As new com.sun.star.beans.PropertyValue 
  Args(0).Name = "Hidden" 
  Args(0).Value = true 
	
   oDocumentToCopy = ThisComponent
   oDesktop = createUnoService( "com.sun.star.frame.Desktop" ) 
   oDocumentToPaste= oDesktop.loadComponentFromURL( "private:factory/swriter", "_blank", 0, Args() ) 
			
   vCursorToCopy = oDocumentToCopy.CurrentController.getViewCursor ()
		
   vCursorToPaste = oDocumentToPaste.CurrentController.getViewCursor ()
  oStart = vCursorToPaste.getStart()
  oText = vCursorToPaste.getText()
	
		
 oText.insertTextContent(oStart,vCursorToCopy,true)
		
		

end Sub

gruss

mitschel
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Mitschel,

also, erst mal was zur Logik: OOo stellte genau einen View-Cursor zur Verfügung, das ist das blinkende Teil im aktuellem Dokument, das aktiv im Vordergrund steht.
Darüber hinaus kannst du beliebig viele Textcursor erzeugen und diese beliebig plazieren. An einem Textcursor kannst du dann Text oder andere Sachen einfügen.

Zu deinem Code: Ein hidden Dokument besitzt keine Viewcursor. Check mal, ob dein Objekt "vCursorToPaste" überhaupt existiert bzw. nicht leer ist.

Auch die Methode "getStart()" halte ich in diesem Zusammenhang für nicht hilfreich. Die wirkt, wenn du einen bestimmten Bereich markiert hast (das ist ja dann der Viewcursor), dann kannst du vom Anfang etwas auslesen.
oText = vCursorToPaste.getText()
Auch diese Zeile ist wohl falsch. Es müsste zumindest "vCursorToCopy" heissen, und ich glaube, du erhältst eine String zurück.
oText.insertTextContent(oStart,vCursorToCopy,true)
Und hier wird es ganz wirr. oText dürfte kein Objekt sein, hier müsste eigentlich dein Dokument stehen.
Anstatt oStart nurzt man meist den "Anker" eines zuvor erstellen Bereiches, zum Beispiel den des Textcursors.
Da musst du mal bischen schmökern. Es gibt so Makrosammlungen, zum Beispiel:
http://www.dannenhoefer.de/faqstarbasic.htm
http://www.amt-wiesbaden.de
Dort findest du ein paar Hinweise. Hab im Moment leider keine Zeit, dir einen fertigen Code zu liefern, aber, ich hoffe es hilft trotzdem :wink:

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten