Juergens-Workshops.de Forum
Macro Problem - Druckversion

+- Juergens-Workshops.de Forum (https://forum.juergens-workshops.de)
+-- Forum: Corel Grafik Forum (https://forum.juergens-workshops.de/forumdisplay.php?fid=65)
+--- Forum: Corel Draw (https://forum.juergens-workshops.de/forumdisplay.php?fid=93)
+--- Thema: Macro Problem (/showthread.php?tid=33579)



Macro Problem - norre - 13.07.2012

Hallo, ich habe mir ein Macro für den PDF-export aufgezeichnet und es so modifiziert, dass das Datum an den Dateinamen angehängt wird. Ich kenne mich nicht wirklich mit der Programmierung aus, probiere halt immer rum irgendwann gehts meistens dann doch wie ich will.
Allerdings mit dem Speicherpfad habe ich meine Probleme. Die PDF soll immer in den jeweiligen (aktiven) Ordner gespeichert werden, da brauche ich wahrscheinlich eine Variable, bis jetzt gehts immer nach Laufwerk g:

Hier mal der Code:


Sub PDFexp()

Dim strD$ ' Datum
strD = CStr(Format(VBA.Date, "dd-mm-yyyy"))
MsgBox strD


ActiveDocument.PublishToPDF "g:\" & ActiveDocument & strD & ".pdf" ' Name

' Recorded 2012/07/13
With ActiveDocument.PDFSettings
.PublishRange = 0 ' CdrPDFVBA.pdfWholeDocument
.PageRange = "1"
.Author = ""
.Subject = ""
.Keywords = ""
.BitmapCompression = 2 ' CdrPDFVBA.pdfJPEG
.JPEGQualityFactor = 60
.TextAsCurves = False
.EmbedFonts = True
.EmbedBaseFonts = False
.TrueTypeToType1 = False
.SubsetFonts = True
.SubsetPct = 80
.CompressText = True
.Encoding = 1 ' CdrPDFVBA.pdfBinary
.DownsampleColor = True
.DownsampleGray = True
.DownsampleMono = True
.ColorResolution = 200
.MonoResolution = 200
.GrayResolution = 200
.Hyperlinks = False
.Bookmarks = False
.Thumbnails = False
.Startup = 0 ' CdrPDFVBA.pdfPageOnly
.ComplexFillsAsBitmaps = True
.Overprints = False
.Halftones = False
.MaintainOPILinks = False
.FountainSteps = 256
.EPSAs = 1 ' CdrPDFVBA.pdfPreview
.pdfVersion = 6 ' CdrPDFVBA.pdfVersion15
.IncludeBleed = False
.Bleed = 31750
.Linearize = False
.CropMarks = False
.RegistrationMarks = False
.DensitometerScales = False
.FileInformation = False
.ColorMode = 0 ' CdrPDFVBA.pdfRGB
.ColorProfile = 1 ' CdrPDFVBA.pdfSeparationProfile
.EmbedFilename = ""
.EmbedFile = False
.JP2QualityFactor = 60
.TextExportMode = 0 ' CdrPDFVBA.pdfTextAsUnicode
.PrintPermissions = 1 ' CdrPDFVBA.pdfPrintPermissionLowResolution
.EditPermissions = 0 ' CdrPDFVBA.pdfEditPermissionNone
.ContentCopyingAllowed = False
.OpenPassword = ""
.PermissionPassword = "Test"
.EncryptType = 1 ' CdrPDFVBA.pdfEncryptTypeStandard
.OutputSpotColorsAs = 0 ' CdrPDFVBA.pdfSpotAsSpot
.OverprintBlackLimit = 95
End With

End Sub


Macro Problem - Helmut - 16.07.2012

...
ActiveDocument.FullFilePath
oder
ActiveDocument.FilePath

müsste eigentlich was bringen. Zumindest gibts dazu bei Tante Google paar Treffer.

Cu Helmut


Macro Problem - norre - 17.07.2012

Hallo Helmut, da hatte ich mir auch schon gedacht aber ich bekomme das so einfach nicht in den Code. Ich habe ja auch nicht wirklich Ahnung davon, da werde ich halt doch meine paar englische Wörter rauskramen und mich beim Corelforum anmelden müssen.:-;


Macro Problem - koter - 17.07.2012

Hallo Norre,

Wo bei Dir das "g:\" steht muß: ActiveDocument.FilePath hin.
Also so:

ActiveDocument.PublishToPDF ActiveDocument.FilePath & ActiveDocument & strD & ".pdf" ' Name

so hat es bei mir funktioniert (X4)


Macro Problem - norre - 17.07.2012

koter schrieb:Hallo Norre,

Wo bei Dir das "g:\" steht muß: ActiveDocument.FilePath hin.
Also so:

ActiveDocument.PublishToPDF ActiveDocument.FilePath & ActiveDocument & strD & ".pdf" ' Name

so hat es bei mir funktioniert (X4)

Jau, das wars ......super. Ich habe die Gänsefüßchen bei ActiveDokument immer dabei gehabt, deshalb kam also der Laufzeitfehler. Auf jedenfall funktioniert das Ganze jetzt.
Danke Schöööön!!!!!!!
xmasdanke


Macro Problem - norre - 26.07.2012

koter schrieb:Hallo Norre,

Wo bei Dir das "g:\" steht muß: ActiveDocument.FilePath hin.
Also so:

ActiveDocument.PublishToPDF ActiveDocument.FilePath & ActiveDocument & strD & ".pdf" ' Name

so hat es bei mir funktioniert (X4)

Hallo, klappt ja alles bestens, aber jetzt habe ich ein Problem mit dem Namen dieser kommt jetzt so :
blablabla.cdr 26-07-2012.pdf
Ist es irgendwie möglich das "cdr" aus dem Namen zu verbannen?


Macro Problem - Helmut - 26.07.2012

...
replace oder split müssten hier weiterhelfen auf ActiveDocument
http://www.vbarchiv.net/commands/details.php?id=replace

also quasi: neuer_name = replace(ActiveDocument, ".cdr", "");

Cu Helmut


Macro Problem - koter - 27.07.2012

Hallo norre,

Wie es Helmut schreibt würde es gehen.
Man sollte aber besser noch die compare–Option setzen.
Ich bekomme nämlich manchmal Corel-Dateien bei denen die Dateierweiterung in Großbuchstaben steht.
(Das war vielleicht bei einer früheren Version mal Standard).

Die Replace Anweisung müsste dann so lauten:
Neuer_Name = Replace(Alter_Name, ".cdr", "", , , vbTextCompare)

Man kann die Erweiterung aber auch mit der Left-Funktion abschneiden.
Neuer_Name = Left(Alter_Name, Len(Alter_Name) - 4)

Wenn man das auch noch in die Befehlszeile einbauen wollte würde sie ein bisschen lang und unübersichtlich, Ich würde deshalb eine Variable verwenden und einen Dreizeiler daraus machen.

Also so:

Dim strD$ ' Datum
Dim PDFName As String
strD = CStr(Format(VBA.Date, "dd-mm-yyyy"))
MsgBox strD

'Der Dreizeiler:
PDFName = ActiveDocument.FullFileName 'der volle Dateiname mit Pfad
PDFName = Left(PDFName, Len(PDFName) - 4) 'die letzten 4 Zeichen abschneiden
ActiveDocument.PublishToPDF PDFName & strD & ".pdf" 'Als PDF Freigeben

Noch ein kleiner Nachtrag:
Bei Deinem Makro steht die With-Anweisung nach der PublishToPDF-Anweisung.
Das Makro erstellt also erst die PDF-Datei und ändert dann die PDF-Einstellungen.
Du müsstest also die PublishToPDF-Anweisung hinter die With-Anweisung setzen.
Falls Du aber immer mit den gleichen Einstellungen arbeitest kannst Du die With-Anweisung auch ganz weglassen.

Gruß
Koter


Macro Problem - norre - 28.07.2012

Hallo, klasse :daumen: das funktioniert super, ich habe ja nicht wirklich Ahnung von der Materie bzw von den Befehlen, deshalb kam ich auch z.B mit der Befehlszeile nicht so klar (Neuer_Name = Replace(Alter_Name, ".cdr", "", , , vbTextCompare)
Aber mit deinem "Dreizeiler" (in Realtext) und die "PublishToPDF-Anweisung" nach hinten verschoben läuft die Sache einbandfrei.

Ich versuche mich schon ein bisserl reinzulesen, allerdings ist mein englisch nicht so der Hit und in meinem Alter bin ich schon froh, dass ich noch weiß wo ich meine Brille hingelegt habe :-)

Noch ein schönes Wochenende und nochmal xmasdanke