MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Windows, Anwendungen & Co. > Corel Draw, Paint Shop & Co.
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 20.10.2009, 13:57   #1
caesar_andy
(Email-Bestätigung fehlt!)
Standard CorelDraw 12.0 - Ebene auf allen Seiten "umschalten"

Hallo zusammen.

Das ist vermutlich eine dumme Frage, aber in Corell Draw X3 gibt es ja diesen schönen "objekt Manager".
Nun habe ich ein Dokumen, das aus - sagen wir mal - 20 Seiten und jeweils 8 ebenen Besteht. Die Ebenen legt Corel ja bekanntlich automatisch auf allen Seiten gleich an, und das ist auch gut so.

Jetzt das Problem:
Beispielsweise soll nun Ebene 7 zwar angezeigt und bearbeitet werden, aber nicht gedruckt. Dafür kann ich ja im Objekt-Manager diesen kleinen "Drucker" anklicken. Unglücklicherweise muss ich das aber für jede Seite einzeln machen, was bei mehreren modifikationen fehleranfällig ist, man ist ja schließlich nur ein Mensch.
Gibt es eine möglichkeit zu sagen, das die Druckbarkeit / Sichtbarkeit / Bearbeitbarkeit einer ausgewählten Ebene mit einem Arbeitsschritt auf allen Seiten innerhalb des dokumentes simultan umgestellt wird?
caesar_andy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.11.2009, 13:54   #2
EarlFred
MOF Guru
MOF Guru
Standard

Hallo caesar_andy,

falls das Problem noch aktuell ist:

Das Makro bei allen Layern auf allen Seiten den Status "Sichtbar" = "Druckbar" bzw. "Nicht sichtbar" = "Nicht druckbar"

Ausnahme: Der Layer "Hilfslinien" wird vorher abgefangen und immer "Nicht druckbar" eingestellt, was aber auch leicht geändert / erweitert werden könnte.

Der Code gehört auf die Ebene "ThisDocument" und springt beim Speichern an.

Also: Speichern, dann drucken

Code:

Option Explicit
Private Sub Document_BeforeSave(ByVal SaveAs As Boolean, ByVal FileName As String)
Dim p As Page
Dim l As Layer
For Each p In ThisDocument.Pages
    For Each l In p.Layers
        If l.Name = "Hilfslinien" Then
            l.Printable = False
        Else
            l.Printable = l.Visible
        End If
    Next l
Next p
End Sub
Getestet auf X4 (V 14) - hoffe, kannst es bei Deiner Version auch implementieren.

Grüße
EarlFred

Geändert von EarlFred (06.11.2009 um 13:58 Uhr). Grund: Kommentiert
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2009, 12:12   #3
caesar_andy
Threadstarter Threadstarter
(Email-Bestätigung fehlt!)
Standard

Hallo.

Danke für deinen ... äh ... "Versuch" mir zu helfen

Leider muss ich zu meiner Schande gestehen, dass ich mich noch nie mit Makros etc. befasst habe habe, vor allem nicht in CorelDraw.

Also hilft mir der Code in soweit nicht weiter, weil ich nicht weiß, was genau ich damit machen soll *schäm*. Auch die Ebene "This Dokument" sagt mir rein gar nichts, meinst du damit die "Master-Seite" oder hat das was mit dem Makro zu tun? Muss das in den VBA-Editor? Wenn ja, der zeigt mir nur einen grauen Hintergrund ohne Möglichkeit zur Texteingabe an.

Wie gesagt, ich bin in dieser Hinsicht ein vollkommener Anfänger
caesar_andy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.11.2009, 13:48   #4
EarlFred
MOF Guru
MOF Guru
Standard

Hallo caesar_andy,

naja, da warst Du doch schon kurz vorm Ziel.

Ich spreche mal aus Sicht meiner Version X4 - könnte bei Dir aber analog laufen:

Mit Alt+F11 kommst Du in den VBA-Editor (da warst Du ja schon ). Aktivier, falls nicht schon passiert, unter Ansicht|Projekt-Explorer eben diesen.
Dort im Fenster (bei mir an der linken Seite, das obere) erscheinen mehrere aufklappbare "Menüs". Eins davon sollte VBAProject(DeinDateiname) heißen. Solange die Ebenen dort aufklappen, bis Du zu "ThisDocument" kommst -> Doppelklick darauf. Dann sollte der graue Hintergrund zu einem weißen werden mit Eingabemöglichkeit. Den Code aus meinem vorigen Post kopieren und dort einfügen.

Das Makro sollte wie gesagt immer dann durchlaufen, wenn dieses Dokument gesichert wird.

Klappt es?

Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2009, 15:14   #5
caesar_andy
Threadstarter Threadstarter
(Email-Bestätigung fehlt!)
Standard

Hallo

Ich habe es jetzt am laufen, danke soweit schonmal. Leider ist das nicht ganz, das, was ich wollte. Vieleicht habe ich es zu undeutlich formuliert.

Pass auf:
Der Grundgedanke ist, eine mehrsprachige Artikelliste zu erstellen, ohne kritische Redundanzen zu haben.
Sprich, alle Informationen die in jeder Sprache identisch sind, z.B. Preis und Artikelnummer, sind auf einer Ebene, die IMMER angezeigt wird. Zudem gibt es eine Ebene für jede Sprache, in die die Beschreibungstexte jeweils übersetzt sind.

Das ergibt ein Dokument mit ca. 20 Seiten und 8 Ebenen je seite.

Will ich jetzt eine deutsche Artikelliste habe, muss ich logischerweise auf allen Seiten alle Ebenen außer Sprache: Deutsch und Hintergrund auf "nicht druckbar" und "Nicht sichtbar" stellen. Gegenwärtig muss das für jede Ebene auf jeder Seite einzeln manuell eingestellt werden. Das ist natürlich fehleranfällig, weil der Objektmanager in X3 bei vielen Seiten und ebenen ziemlich unübersichtlich wird. Und plötzlich wird mal irgendwo der falsche Text gedruckt, oder zwei verschieden sprachige Texte zusammen auf eine Seite, oder, oder, oder.

Um nun Zeit zu spaaren und die wahrscheinlichkeit zu minimieren, dass beim Umschalten ein Fehler passiert, suche ich eine möglichkeit, mit dem der Nutzer die Sichtbarkeit / Druckbarkeit / Bearbeitbarkeit der ebenen nur auf einer der 20 Seiten manuell einstellen muss, und diese Einstellungen dann für den rest des Dokumentes automatisch übernommen werden.

Ich hoffe jetzt ist dir eher klar, wo mich der Schuh drückt

Deine Idee ist zwar ein Ansatz, der die notwendigen Klicks halbiert, aber noch immer nicht 100% sicher. Aber vieleicht hast du ja auch dafür eine Idee.
caesar_andy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2009, 16:03   #6
EarlFred
MOF Guru
MOF Guru
Standard

Hallo caesar_andy,

mal eine anderer Vorschlag, da mir der Rest zu sehr in If..Then..Else-Orgien ausartet

Mit Doppelklick auf eine beliebige Ebene im Object-Manager wird diese aktiviert. Dies kann man mit VBA "abfangen".

Jetzt die "harte Tour":
Alle Ebenen auf allen Seiten, die so heißen wie die eben aktivierte, werden sichtbar, bearbeitbar und druckbar gesetzt. Der Rest auf's Gegenteil.

Code:

Option Explicit
Private Sub Document_LayerActivate(ByVal Layer As Layer)
Dim p As Page
Dim l As Layer
For Each p In ThisDocument.Pages
    For Each l In p.Layers
        If l.Name = Layer.Name Then
            l.Printable = True
            l.Editable = True
            l.Visible = True
        Else
            l.Printable = False
            l.Editable = False
            l.Visible = False
        End If
    Next l
Next p
End Sub
Es führen auch noch viele andere Wege zum Ziel, aber wenn man das den Nutzern so erklärt (was ja schnell geht), ist das sicher erträglich.

Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2009, 16:29   #7
caesar_andy
Threadstarter Threadstarter
(Email-Bestätigung fehlt!)
Standard

HERVORRAGEND!

Das ist fast perfekt. Jetzt müsstest du mir nur noch verraten, wie ich die Ebene "Hintergrund" davon ausklammern kann, da diese ja unabhänig von der gewählten Sprache immer angezeigt werden soll.
caesar_andy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2009, 16:34   #8
EarlFred
MOF Guru
MOF Guru
Standard

Hallo caesar_andy,

ja, verrat ich Dir auch noch

Code:

Option Explicit
Private Sub Document_LayerActivate(ByVal Layer As Layer)
Dim p As Page
Dim l As Layer
For Each p In ThisDocument.Pages
    For Each l In p.Layers
        If l.Name = Layer.Name Or l.Name = "Hintergrund" Then
            l.Printable = True
            l.Editable = True
            l.Visible = True
        Else
            l.Printable = False
            l.Editable = False
            l.Visible = False
        End If
    Next l
Next p
End Sub
Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2009, 17:01   #9
caesar_andy
Threadstarter Threadstarter
(Email-Bestätigung fehlt!)
Standard

Das ist genau das, was ich wollte. Vielen Dank
caesar_andy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2009, 17:03   #10
caesar_andy
Threadstarter Threadstarter
(Email-Bestätigung fehlt!)
Standard

Edith sagt:
Gibt es eine Möglichkeit, mir die Bestätigungs-Mail nochmal zuschicken zu lassen?
Meine registrierung hier ist schon ne weile her, und ich habe die nicht mehr...habe aber auch nicht die Berechtigung dazu, das Thema auf "Erledigt" zu setzen.
caesar_andy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.11.2009, 17:25   #11
EarlFred
MOF Guru
MOF Guru
Standard

Hallo caesar_andy,

schau mal hier:
http://www.ms-office-forum.de/forum/...15&postcount=7

Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 25.07.2012, 12:51   #12
Johanna2
Standard VBA Code aus Projekt in Global umschreiben

Hallo,

diesen auf Grundlage des uralten Beitrags von EarlFred (Danke!!) habe ich den erzeugten Code benutze ich sehr oft. Ich würde ihn daher gerne zu den global Macros schieben, um ihn nicht in jede Arbeitsmappe kopieren zu müssen. Aber es scheint dazu eine Anpassung erforderlich zu sein (Meldung des Compilers: Variable nicht definiert (ThisDocument) ) Kann jemand mir helfen?

Sub Alles_unsichtbar()
Dim p As Page
Dim l As Layer

For Each p In ThisDocument.Pages
For Each l In p.Layers
l.Visible = False
Next l
Next p

End Sub


Schönen Gruß, Johanna.
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.