🙏 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. 🤗

spezielle sheets auswählen und als pdf speichern

Alles zur Programmierung im LibreOffice.
Antworten
paulderfinne
Beiträge: 71
Registriert: Mi 20. Feb 2013, 13:49

spezielle sheets auswählen und als pdf speichern

Beitrag von paulderfinne » So 4. Dez 2016, 14:26

Hallo liebe LO-Gemeinde,

ähnliche Themen sind hier bestimmt schon besprochen worden, ich habe auch ähnliche Themen gefunden, werde aber nicht klug daraus. Mein Problem steht schon in der Überschrfit. Bisher habe ich pdf-Dateien nur aus dem Writer heraus als pdf exporiert:

Code: Alles auswählen

sub SpeichernAlsPDF
   Dim myProps(0) as New com.sun.star.beans.PropertyValue
   myDoc = thisComponent
   oldUrl=myDoc.url
   sUrl=Left(oldUrl, Len(oldUrl) - 3) + "pdf" 
   myProps(0).Name="FilterName" 
   myProps(0).Value = "writer_pdf_Export"
   myDoc.storetoUrl(sUrl,myProps())
end Sub
Wie man sieht wird hier der vorhandenen Dateinamen mit .pdf ersetzt. Nun möchte ich aber das ganze aus Calc heraus machen und zwar so, dass zwei sheets, deren Namen durch die aktuelle Kalenderwochennummer + die darauf folgende festgelegt sind als eine pdf gespeichert werden.

Zusammengefasst:
1. Wie bekomme ich im Makro die aktuelle Wochennummer (im Sheet ist das die Funktion: =KALENDERWOCHE(C3;21))
2. Wie wähle ich zum Exportieren zwei genau definierte sheets aus (Sie heißen auch beispielsweise KW48 und KW49)
3. Wie mache ich aus einem writer-export einen calc-export?

Es wäre schrecklich lieb, wenn mir da einer helfen könnte.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von gogo » So 4. Dez 2016, 15:57

Hallo Paul

die aktuelle Kalenderwoche bekommst Du mit

Code: Alles auswählen

format(date, "ww")
Einzelne Seiten des pdfs ist schwierig, da die "PageRange" Properties Funktion nicht funktionert.

normalerweise würde:

Code: Alles auswählen

sub storeToPDF()

 oDoc   = ThisComponent
 oController = oDoc.getCurrentController()

 dim aMediaDescriptor(1) as new com.sun.star.beans.PropertyValue
 aMediaDescriptor(0).Name = "FilterName"
 aMediaDescriptor(0).Value = "calc_pdf_Export"
 
 aMediaDescriptor(1).Name = "PageRange"
 aMediaDescriptor(1).Value = ("1,3")

 oDoc.storeToURL("file:///tmp/test.pdf", aMediaDescriptor())

end sub
ausreichen, aber das funktioniert nicht, es werden immer alle Seiten der Datei exportiert.

Wenn Du genau weisst welche Seiten Du brauchst, kannst Du unter Linux mit einem shell-Kommando nachhelfen:

Code: Alles auswählen

sub storeToPDF()

 oDoc   = ThisComponent
 oController = oDoc.getCurrentController()

 dim aMediaDescriptor(0) as new com.sun.star.beans.PropertyValue
 aMediaDescriptor(0).Name = "FilterName"
 aMediaDescriptor(0).Value = "calc_pdf_Export"
 
 oDoc.storeToURL("file:///tmp/test.pdf", aMediaDescriptor())

'holt die Seiten 1 und 3 aus /tmp/test.pdf und speichert sie unter /tmp/Dokument.pdf
shell("pdftk /tmp/test.pdf cat 1 3 output /tmp/Dokument.pdf")

end sub
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

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

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von paulderfinne » So 4. Dez 2016, 16:26

Vielen Dank gogo,

das mit dem shell-Befehl ist ja eine Superidee. Ich wollte über die Shell die Dateien in's nternet schieben (scp...). Du hast mir echt geholfen. Ich werde mich sofort dranmachen.

Edit: @gogo: bist du sicher, dass der Kalenderwochenbefehl die europäische Woche ausgibt?

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von mikele » So 4. Dez 2016, 17:13

Hallo,
im folgenden Makro kannst du die gewünschten Tabellen auswählen, die dann als pdf exportiert werden.

Code: Alles auswählen

sub pdf_einzelne_Tabellen
	odoc=thiscomponent
	'Auswahl der Tabellen
	obereiche = odoc.createInstance("com.sun.star.sheet.SheetCellRanges")
	do 
		tabelle=inputbox ("Welche Tabelle soll exportiert werden?")
		if odoc.sheets.hasbyname(tabelle) then 
			obereiche.addRangeAddress(odoc.sheets.getbyname(tabelle).getRangeAddress, 0)
		else
			If tabelle>"" then msgbox "Diese Tabelle existiert nicht"
		end if
	loop until tabelle="" 'Abbruch der Abfrage nach leerer Eingabe

	'der eigentliche pdf-Export
	'
	'Argumente festlegen
	Dim arg(2) as new com.sun.star.beans.PropertyValue
	arg(0).Name = "URL"	
	arg(0).Value = Left(odoc.url, Len(odoc.url) - 3) + "pdf"
	arg(1).Name = "FilterName"
	arg(1).Value = "calc_pdf_Export"
	dim aFilterData(0) as new com.sun.star.beans.PropertyValue
	aFilterData(0).Name = "Selection"
	aFilterData(0).Value = obereiche
	arg(2).Name = "FilterData"
	arg(2).Value = aFilterData()

	'Datei schreiben
	odoc.storetoUrl(arg(0).value,arg())
	
end sub
Gruß,
mikele

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

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von paulderfinne » Mo 5. Dez 2016, 08:27

Vielen Dank, auch an dich Mikele. Scheint ja doch mit BASOIC-Mitteln zu funzen. Habe jetzt aber erstmal mit gogos Idee gespielt.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von gogo » Mo 5. Dez 2016, 11:30

Be mir ist's die europäische Woche:

Code: Alles auswählen

print "1.1.2016" & " KW:" & format("1.1.2016","ww = nnnn")
print "1.1.2016" & " KW:" & format("1.1.2015","ww = nnnn")
Im allgemeinen hält sich LO an ISO-Standards, anders als Firmen die glauben, dass sie's besser wissen...

Es würde mich nicht wundern, wenn auf einem US-Rechner die US-Woche angezeigt würde.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

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

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von paulderfinne » So 11. Dez 2016, 13:29

Vielen Dank euch Beiden. Ich habe eure Anregungen benutzt und das gewünschte erreicht. (Bin erst heute zum Programmieren gekommen)

Cool wäre noch, wenn ich es schaffen könnte, dass LO dieses Makro nach jedem Speichern ausführt. Es also an den "Speichern"-Knopf anhängt.

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von mikele » So 11. Dez 2016, 16:10

Hallo,
Es also an den "Speichern"-Knopf anhängt.
Binde es an das Ereignis "Dokument wurde gespeichert".
->Extras->Anpassen->Ereignisse
Gruß,
mikele

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

Re: spezielle sheets auswählen und als pdf speichern

Beitrag von paulderfinne » Mo 12. Dez 2016, 09:21

Danke Michele, ja das funktioniert sogar einwandfrei. Richtig cool ist diese Ereignisanpassung.

Ich beuge mein Haupt in Ehrfurcht und Dankbarkeit. Ihr habt mir sehr geholfen.


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