Seite 1 von 1
spezielle sheets auswählen und als pdf speichern
Verfasst: So 4. Dez 2016, 14:26
von paulderfinne
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.
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: So 4. Dez 2016, 15:57
von gogo
Hallo Paul
die aktuelle Kalenderwoche bekommst Du mit
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
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: So 4. Dez 2016, 16:26
von paulderfinne
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?
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: So 4. Dez 2016, 17:13
von mikele
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
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: Mo 5. Dez 2016, 08:27
von paulderfinne
Vielen Dank, auch an dich Mikele. Scheint ja doch mit BASOIC-Mitteln zu funzen. Habe jetzt aber erstmal mit gogos Idee gespielt.
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: Mo 5. Dez 2016, 11:30
von gogo
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.
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: So 11. Dez 2016, 13:29
von paulderfinne
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.
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: So 11. Dez 2016, 16:10
von mikele
Hallo,
Es also an den "Speichern"-Knopf anhängt.
Binde es an das
Ereignis "Dokument wurde gespeichert".
->Extras->Anpassen->Ereignisse
Re: spezielle sheets auswählen und als pdf speichern
Verfasst: Mo 12. Dez 2016, 09:21
von paulderfinne
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.