EPS-Export für Corel Draw 12

  • Sonstige

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Marco S.

    EPS-Export für Corel Draw 12

    Hallo VBA-Tüftler,

    ich habe da ein kleines nettes VBA-Programm im Netz gefunden. Es soll folgendes machen:

    Es soll eine Corel Draw 12 Datei (vektorbasiertes Zeichen-Programm, Dateisuffix: cdr)als EPS - Datei exportieren (EPS - ein vektorbasiertes Dateiformat)

    Nun gibt es mehrere Seiten in dieser Corel Draw Datei (analog zu den Mappen in einer Excel-Datei). Beim Export dieser Datei sollen alle Seiten als einzelne EPS-Datei in einen angegeben Pfad exportiert werden. Das funktioniert auch!

    Jetzt sollen die einzelnen EPS-Dateien aber die Namen der Seiten, die in der Corel Draw-Datei angelegt wurden, übernehmen. Stattdessen wird der Dateiname der Corel Draw Datei beim EPS-Export übernommen.

    Bsp.:

    Corel Draw Dateiname = cdr-name

    Seitennamen: = s1, s2, s3,..., sn


    exportierter EPS-Dateiname = cdr-name-1, cdr-name-2,...cdr-name-n (ist Zustand!)

    Soll-Zustand!

    exportierter EPS-Dateiname = s1, s2,..., sn


    Hier mal der Code, damit ihr mal rüberschauen könnt. Vielleicht habt ihr ja spontan eine Idee :)

    Visual Basic-Quellcode

    1. Public Sub SeitenSpeichern_EPS()
    2. Dim SeiteNr As Integer, Seite As Page
    3. Dim Pfad As String, FormatStr As String, DateiName As String
    4. Dim opt As New StructExportOptions
    5. On Error GoTo AbbruchBeiFehler
    6. CorelScript.SuppressPainting
    7. '*** Ausgabepfad erstellen
    8. Pfad = "C:\Temp\Corel\"
    9. Do
    10. Pfad = InputBox("Ausgabepfad für die Bilder", "Export nach EPS", Pfad)
    11. If Pfad = "" Then Exit Sub
    12. If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"
    13. Loop Until Dir$(Pfad, vbDirectory) <> ""
    14. Pfad = Pfad & Left(ActiveDocument.FileName, InStrRev(ActiveDocument.FileName, ".") - 1)
    15. SeiteNr = ActiveDocument.Pages.Count
    16. While SeiteNr > 1
    17. FormatStr = FormatStr & "0"
    18. SeiteNr = SeiteNr / 10
    19. Wend
    20. With opt
    21. .AntiAliasingType = cdrSupersampling
    22. .ImageType = cdrRGBColorImage
    23. .Dithered = False
    24. .Overwrite = True
    25. '.Transparent = True
    26. .ResolutionX = 96
    27. .ResolutionY = 96
    28. '.SizeX = opt.ResolutionX * s.SizeWidth
    29. ' opt.SizeY = opt.ResolutionY * s.SizeHeight
    30. End With
    31. Set Seite = ActivePage
    32. For SeiteNr = 1 To ActiveDocument.Pages.Count
    33. ActiveDocument.Pages(SeiteNr).Activate
    34. DateiName = Pfad & Format(SeiteNr, FormatStr) & ".eps"
    35. If Dir$(DateiName) <> "" Then Kill DateiName
    36. ActiveDocument.Export DateiName, cdrEPS, cdrCurrentPage, opt
    37. Next SeiteNr
    38. Seite.Activate
    39. AbbruchBeiFehler:
    40. CorelScript.ResumePainting
    41. End Sub


    ?(
    Vielen Dank schon mal...

    Gruß aus Kassel
    Marco


    Edit by Agent: VB-Tag eingefügt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    DateiName = Pfad & Format(SeiteNr, FormatStr) & ".eps"

    In Excel wäre das nach dem Prinzip WorkbookName.WorksheetName.Name, wie das in CorelDraw aussieht, weiß ich aber nicht, müsste so ähnlich sein. Schau mal, was dir die IDE alles anzeigt, wenn du "CorelScript" eingibst und dahinter einen Punkt setzt, da kommt dann so eine Dropdrownauswahl.

    EDIT: Versuch mal sowas wie Seite.Name oder Title
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    So, ich habe den Code jetzt mal so geändert:

    DateiName = Pfad & Format(SeiteNr, FormatStr) & Format(Seite.Name) & ".eps"

    Jetzt wird der Dateiname zusammen mit dem Seitennamen (s) schon angezeigt! Jedoch immer nur der Seitenname der ersten Seite.

    Bsp.:
    dateiname_1_s1, dateiname_2_s1,..., dateiname_n_s1

    Soll aber
    dateiname_1_s1, dateiname_2_s2,..., dateiname_n_sn

    Vielleicht muss man da auch noch so ein counter einbauen.
    Seite:Name = 1 To ActiveDocument.Pages.Count ??

    Dann müsste man auch noch wissen wie und wo man die Anweisung einbaut (Syntax)..bin leider nur ein normaler Erdbewohner...:(

    aber vielleicht findet Mr. Smith ja noch eine lücke in der Matrix :)
    Versuchs mal so...

    Visual Basic-Quellcode

    1. For SeiteNr = 1 To ActiveDocument.Pages.Count
    2. Set Seite = ActiveDocument.Pages(SeiteNr)
    3. '... Seite.Name ...
    4. Next SeiteNr
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Mr. Smith hatte immer Recht

    Hi,

    Mr. Smith hat tatsächlich die lücke im Matrix-Code gefunden. Jetzt wird er für dieses Projekt nicht mehr gebraucht. Das ändert aber nichts an der Tatschache, dass er immer Recht hatte!

    Vielen Dank!

    Habe es ab Zeile 38 jetzt so realisiert, falls es jemand verwenden möchte:

    Set Seite = ActivePage
    For SeiteNr = 1 To ActiveDocument.Pages.Count
    ActiveDocument.Pages(SeiteNr).Activate

    Set Seite = ActiveDocument.Pages(SeiteNr)
    '.Seite.Name

    DateiName = Pfad & Format(SeiteNr, FormatStr) & "_" & Format(Seite.Name) & ".eps"
    If Dir$(DateiName) <> "" Then Kill DateiName
    ActiveDocument.Export DateiName, cdrEPS, cdrCurrentPage, opt
    Next SeiteNr
    Seite.Activate

    AbbruchBeiFehler:
    CorelScript.ResumePainting

    End Sub