Seite 1 von 1

Fragen Makro Programmierung

Verfasst: Mi 21. Jan 2015, 19:21
von Hille
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?

Re: Fragen Makro Programmierung

Verfasst: Mi 21. Jan 2015, 20:22
von paulderfinne
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 



Re: Fragen Makro Programmierung

Verfasst: Do 22. Jan 2015, 08:39
von Hille
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.

Re: Fragen Makro Programmierung

Verfasst: Do 22. Jan 2015, 10:06
von karolus
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

Re: Fragen Makro Programmierung

Verfasst: Do 22. Jan 2015, 12:45
von Hille
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?

Re: Fragen Makro Programmierung

Verfasst: Do 22. Jan 2015, 16:48
von Hille
Habe es alleine hinbekommen. Danke nochmal für die schnelle Hilfe.