Makro für PDF-Konvertierung mit automatischem Dateinamen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro für PDF-Konvertierung mit automatischem Dateinamen

von Karolus » Mo, 11.12.2006 12:53

Hallo pacman

Die Rechnungsnr. ist der gewünschte Dateiname ?

Den Pfad kannst auch direkt im Makro eintragen, ändere dazu die 6.Zeile :

Code: Alles auswählen

myurl =converttourl(mystring)
um in :

Code: Alles auswählen

myurl =converttourl("dein/Verzeichnis/pfad/" & mystring & ".pdf")
Die Anführungzeichen gehören dazu, den eigentlichen Pfad musst du wissen, siehe dazu die Tips aus meiner letzten Antwort.

Gruß Karo

von pacman » Mo, 11.12.2006 11:58

genau so ist es,die zelle beinhaltet die rechnungsnummer. hmm den pafd kann ich da aber nicht reinschreiben..kann man den einen festen pfad vorgeben so das nur der dateiname aus dem feld genommen wird ??

von Karolus » So, 10.12.2006 09:39

Hallo

Hast du evtl nur Dateinamen, aber ohne Verzeichnisspfad in E8 eingetragen ?

unter Linux sollten Einträge etwa so aussehen:

home/pacman/deinverzeichnis/handglas.pdf

unter Windows(ohne Gewähr) beispielweise
c:eigene Dateien/pacman/handglas.pdf

Gruß Karo

von pacman » So, 10.12.2006 04:07

hallo,

sehr intersantes makro,wäre für mich auch sehr nützlich..leiderbekomme ich es nicht zumlaufen.habe den code wie folgt geändert:

Code: Alles auswählen

sub pdfpfad
   myDoc = thisComponent
mySheet = myDoc.sheets(0) '1.Blatt
mycell = mysheet.getCellByPosition(4,7)  'E8

myString=mycell.string
myurl =converttourl(mystring)
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


dim args2(3) as new com.sun.star.beans.PropertyValue
args2(0).Name = "URL"
args2(0).Value = myurl
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
args2(2).Name = "FilterData"
args2(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,true,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,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args2(3).Name = "SelectionOnly"
args2(3).Value = true

dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
'dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args2())
Rem ______Mit : ....uno:ExportDirectToPDF.....wird zwar ohne Dialog gespeichert, aber Rem_______auch immer das ganze Dokument.

end sub

Sub Macro1

End Sub

Sub Macro2

End Sub
eigentlich habe ich nur diese zeile geändert "mycell = mysheet.getCellByPosition(4,7) 'E8"dader gewnschte dateiname bei mir in e8 steht.

wennich das makro starteöffnen sich die pdf exportoptionen.wenn ich diese bestätige (sollteeigentlich von alleine gehen) kommtfolgendewarnmeldung:

fehler bei speichern des dokumentes handglas:
Die Operation auf \\.\ wurde mit ungültigen Parameter gestartet


Ich muss zugeben ich habe keine große ahnung von den codes da ich nur anwender bin,daher erwarte ich jetzt auch von keinem das er mir falls das sehr aufwendig sein sollte die geschichte grundlegend erklärt. Ichdachtemir das ich nur die zelle ändern muss aus der sich das makro den dateinamen holt.dem ist wohl nicht so..
Ich hätte das gerne so das die tatsächliche seite 1 unter dem namen aus der zelle E8 in einem bestimmten pfad gespeichert wird. wenn es nicht alzu aufwendigt ist wäre ich fürhilfe dankbar.

Funktioniert

von jerry_muc » Di, 28.11.2006 19:26

Hallo Karo,

*hirnklatsch* ... logisch. Es funktioniert prächtig! paar kleine Angleichungen habe ich noch getätigt. Mein Fehler lag wirklich nur am Blatt- und Zellbezug ich kleiner Depp :-)

Vielen Dank. habe jetzt ein Rechnungstool mit dem ich alle rechnungen als PDF speichern kann, und das bedienbar für jeden :-))

Jerry

von Karolus » Di, 28.11.2006 05:33

Hallo Jerry
Habe ich richtig verstanden, dass bei Blatt neun dann im
mySheet = myDoc.sheets(9) <--- eingeben muss?
Nein, der interne Index beginnt mit 0;-->Daher entspricht Blatt 9 > myDoc.sheets(8)
Aber, um Missverständnisse zu vermeiden, die zwei Zeilen :
mySheet = myDoc.sheets(0) '1.Blatt
mycell = mysheet.getCellByPosition(0,0) 'A1
definieren die Zelle mit dem Speicherpfad, und nicht die Selektion die als .pdf gespeichert werden soll.
Letzteres bestimmst du über die Auswahl unmittelbar vor dem Start des makros.

Gruß Karo

Funktioniert noch nicht ganz

von jerry_muc » Mo, 27.11.2006 22:21

Hallo Karo und vielen Dank im Voraus,

Mit dem Makro komme ich mittlerweile weiter als bisher.

Allerdings kommt noch immer eine Fehlermeldung:

---Fehler bei speichern des Dokumentes "..."
---Allgemeiner Fehler
---Allgemeiner Ein/- Ausgabefehler

Das Makro frag den Speicher-Dialog für das Konvertieren ab, was ich bestätige. Dann kommt der Fehler. Mit der Bestätigung des Dialoges kann ich leben.

Habe ich richtig verstanden, dass bei Blatt neun dann im
mySheet = myDoc.sheets(9) <--- eingeben muss?


Danke nochmals im Voraus
Jerry

von Karolus » Mo, 27.11.2006 20:32

Hallo Jerry

Den Ein/Ausgabefehler verschwindet mit :

Code: Alles auswählen

converttourl(....
aber der Pdf-Export beschränkt auf die aktuelle Auswahl ist vermtl ?? - nur zusammen mit dem Export-Dialog und und der Auswahl der entsprechenden Option möglich.
Aber hier erstmal den Code :

Code: Alles auswählen

sub pdfpfad
   myDoc = thisComponent
mySheet = myDoc.sheets(0) '1.Blatt
mycell = mysheet.getCellByPosition(0,0)  'A1

myString=mycell.string
myurl =converttourl(mystring)
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


dim args2(3) as new com.sun.star.beans.PropertyValue
args2(0).Name = "URL"
args2(0).Value = myurl
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
args2(2).Name = "FilterData"
args2(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,true,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,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args2(3).Name = "SelectionOnly"
args2(3).Value = true

dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
'dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args2())
Rem ______Mit : ....uno:ExportDirectToPDF.....wird zwar ohne Dialog gespeichert, aber Rem_______auch immer das ganze Dokument.

end sub
Gruß Karo

Makro für PDF-Konvertierung mit automatischem Dateinamen

von jerry_muc » Mo, 27.11.2006 13:11

Hallo, nachdem die bisherigen Lösungen nicht funktionierten, versuche ich es nochmal.

Ich benötige ein Makro, mit dem ich einen markierten Bereich einer Tabelle unter dem Dateinemen mit dem Zellinhalt der ersten Zelle in eine PDF-Datei abspeichern kann.

Ich habe ein Abrechnungsdokument erstellt mit mehreren Tabellen. Nun soll aber eben nur ein markierter Bereich (oder auch nur eine bestimmte Tabelle, falss das möglich ist) über ein Makro abgespeichert werden. Der Name der neuen Datei, soll sich aus dem Zellinhalt A1 ergeben, der an diese Zelle übergeben wurde. In A1 steht: "=L23". In L23 generiere ich den Namen für die Datei, inkl. Pfad und einer Rechnungsnummer. Daraufhin wird in A1 z.B. c:/tmp/Abrechnungsliste1.PDF angezeigt.

Meine bisherigen Versuche scheitern an Ein-Ausgabefehlern, o.ä.

Bitte helft mir :-)

Liebe Grüsse
Jerry_muc

Nach oben