🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Fragen Makro Programmierung

Alles zur Programmierung im LibreOffice.
Antworten
Hille
Beiträge: 10
Registriert: Mi 21. Jan 2015, 16:50

Fragen Makro Programmierung

Beitrag von Hille » Mi 21. Jan 2015, 19:21

Hallo,

ich bin dabei verschiedene Makros für Calc zu erstellen und habe folgende Fragen:

1. Ich möchte in einem Dokument eine Datei öffnen, entsprechende Daten daraus kopieren, um diese dann in das Dokument einzufügen. Wie kann ich das am besten lösen?

2. Ich versende per Makro ein E-Mail. Dabei sollen im Body Zeilenumbrüche eingefügt werden. Dies habe ich so gelöst:

Code: Alles auswählen

"Begrüßungstext" & Chr(13) & Chr(13) & "Mein Text"
Leider erfolgen aber keine Zeilenumbrüche, sondern es wird alles in einer Zeile angegeben. Wo liegt der Fehler?

paulderfinne
Beiträge: 71
Registriert: Mi 20. Feb 2013, 13:49

Re: Fragen Makro Programmierung

Beitrag von paulderfinne » Mi 21. Jan 2015, 20:22

Vielleicht solltest du ein wenig präziser angeben, was du willst. Ich habe mal Daten aus einer Datenbank in ein Spreadsheet ausgegeben. Denke, das müsste mit einem zweiten Spreadsheet ähnlich gehen.
So könntest du beispielsweise eine neue Datei mit dem Namen "name.ods" im Verzeichnis "/verzeichnis/" öffnen und falls sie existiert den User fragen ob er trotzdemm weiter machen will. Wie gesagt, du müsstest schon ein bisschen mehr von dir preisgeben ;)

Code: Alles auswählen

	strDatei="/verzeichnis/name.ods"
	strDateiUrl=converttourl(strDatei)
	If Fileexists(strDatei)=false  then
	       myNewDoc = StarDesktop.loadComponentFromURL ("private:factory/scalc","_blank", 0, mArgs())	
	       myNewDoc.storeasurl(strDateiUrl,dummy())
    else
    	   i=MsgBox ("Datei existiert bereits, trotzdem fortsetzen?",4,"ACHTUNG")
    	   if i = 6 then
	       	     dim myFileProp() as new com.sun.star.beans.PropertyValue
           	     myNewDoc = StarDesktop.loadComponentFromURL(strDateiUrl, "_blank", 0, myFileProp() )
            end if
			if i<>6 then
			exit sub
			end if
    end if 



Hille
Beiträge: 10
Registriert: Mi 21. Jan 2015, 16:50

Re: Fragen Makro Programmierung

Beitrag von Hille » Do 22. Jan 2015, 08:39

paulderfinne hat geschrieben:Vielleicht solltest du ein wenig präziser angeben, was du willst.
Dokument1 soll per Makro eine externe xls-Datei öffnen, einen bestimmten Bereich in dieser externen Datei markieren und kopieren, um dann anschließend den kopieren Bereich in Dokument1 einzufügen.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2539
Registriert: Fr 10. Dez 2010, 10:01

Re: Fragen Makro Programmierung

Beitrag von karolus » Do 22. Jan 2015, 10:06

Hille hat geschrieben: Dokument1 soll per Makro eine externe xls-Datei öffnen, einen bestimmten Bereich in dieser externen Datei markieren und kopieren, um dann anschließend den kopieren Bereich in Dokument1 einzufügen.
Wenn diese Aktionen genau einmal gemacht werden sollen, ist die Umsetzung per Makro überflüssig - du kannst sie genauso "per Hand" durchführen.

Wenn jedoch die Daten in Dokument1 mit den Daten aus dem externen Dokument syncron gehalten werden sollen, ist ebenfalls kein Makro erforderlich, das lässt sich per Formel lösen:
Gib in der Zelle oben links im Zielbereich ein =Gleichheitszeichen ein, wechsle in die Quelldatei, markiere den Quellbereich, und betätige die enter-taste, und aktiviere für die Zelle im Formelassistent die [x]matrix-option.

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Hille
Beiträge: 10
Registriert: Mi 21. Jan 2015, 16:50

Re: Fragen Makro Programmierung

Beitrag von Hille » Do 22. Jan 2015, 12:45

karolus hat geschrieben: Wenn diese Aktionen genau einmal gemacht werden sollen, ist die Umsetzung per Makro überflüssig - du kannst sie genauso "per Hand" durchführen.
Danke, hat problemlos funktioniert!

Ich würde dann per Knopfdruck (Makro) einen bestimmten Bereich als pdf speichern wollen. Dies habe ich so gelöst:

Code: Alles auswählen

sub pdf

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(3) as new com.sun.star.beans.PropertyValue

document   = ThisComponent.CurrentController.Frame
args1(0).Name = "URL"
args1(0).Value = "file:///N:/datei.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(Array("UseLosslessCompression",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("IsSkipEmptyPages",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("FormsType",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(3).Name = "SelectionOnly"
args1(3).Value = true
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 1, args1())
end sub
Allerdings wird hier das komplette Blatt als pdf exportiert. Wie müsste ich das ändern, das z.B. A4:C126 nur exportiert werden?

Hille
Beiträge: 10
Registriert: Mi 21. Jan 2015, 16:50

Re: Fragen Makro Programmierung

Beitrag von Hille » Do 22. Jan 2015, 16:48

Habe es alleine hinbekommen. Danke nochmal für die schnelle Hilfe.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten