Beiträge: 38 
	Themen: 7 
	Danke erhalten: 0 in 0 Posts
 
Danke gesagt: 5 
	Registriert seit: 03.12.2016
	
	 
 
	
		
		
  
		09.11.2020, 11:54 
		
	 
	
		Hallo liebe Corel-Spezialisten, 
 
ich scheitere leider daran ein lauffähiges Makro aufzuzeichnen. Das Makro soll folgendes tun: 
 
Alles auf der Seite markieren 
dann alles in Kurven umwandeln 
dann alle Linien mitscalieren 
dann Alles gruppieren 
diese Gruppe dann auf 10% verkleinern 
dann die Gruppe auf die Seite zentrieren 
dann die Seitengröße auf DIN A4 umstellen 
(Ansicht auf ganze Seite umstellen) 
 
Ich kann das Aufzeichnen, aber bei der Ausführung wird ein Laufzeitfehler gemeldet. 
Irgend ein Parameter ist im ungültigen Bereich. 
Ich habe es mehrmals versucht, die Infos aus dem Debugger aber leider nicht verstanden. 
 
Ich verwende Corel X8 
 
Liebe Grüße und bleibt gesund, Norbert
	 
	
	
	
	
	
 
	  
	
	  • 
 
 
 
	
	
	
		
	Beiträge: 1.506 
	Themen: 11 
	Danke erhalten: 303 in 261 Posts
 
Danke gesagt: 30 
	Registriert seit: 24.03.2012
	
	 
 
	
	
		Hallo Norbert, 
Die Liste in Deinem Beitrag ist eigentlich schon das Makro. 
Man muss es nur noch in VBA übersetzen:
 Code: Sub DiesUndDas() 
    ActiveDocument.Unit = cdrMillimeter 
    With ActivePage.Shapes.All 
        .ConvertToCurves 'dann alles in Kurven umwandeln 
        .SetOutlinePropertiesEx ScaleWithShape:=cdrTrue 'dann alle Linien mitscalieren 
        .Group 'dann Alles gruppieren 
        .Stretch 0.1 'diese Gruppe dann auf 10% verkleinern 
        .CenterX = ActivePage.CenterX 'dann die Gruppe auf die Seite zentrieren 
        .CenterY = ActivePage.CenterY 
    End With 
    ActivePage.SetSize 210, 297 'dann die Seitengröße auf DIN A4 umstellen 
    ActiveWindow.ActiveView.ToFitPage '(Ansicht auf ganze Seite umstellen) 
End Sub
 Punkt eins (Alles auf der Seite markieren) habe ich ausgelassen.
 
Es kann aber zu unerwünschten Ergebnissen führen, wenn man das alles „in einem Rutsch“ macht. 
Es kommt auf die Art der Objekte in der Zeichnung an, ob es klappt. 
 
Gruß
 
Koter
	  
	
	
	
	
	
 
	  
	2 Benutzer bedanken sich bei koter für diesen Beitrag:2 Benutzer bedanken Danke koter für diesen Beitrag
	  • nowa, Unkraut
 
 
 
	
	
	
		
	Beiträge: 38 
	Themen: 7 
	Danke erhalten: 0 in 0 Posts
 
Danke gesagt: 5 
	Registriert seit: 03.12.2016
	
	 
 
	
	
		Hallo Koter, 
 
vielen Dank für deine ausführliche Antwort mit dem Code. 
Ich hatte versucht das Makro durch eine "Aufzeichnung" zu erstellen. Das hat wohl nicht funktioniert. 
Gibt es eigentlich eine Übersicht dieser "Makro-Syntax"? 
Ich kann leider nur Fortran, Pascal, und Basic (nix objektorientiertes) 
 
Mal sehen, wie ich den Code in das Corel bekomme :-) 
 
Ich gebe auf jeden Fall Rückmeldung, kann aber ein wenig dauern. 
 
LG Norbert
	 
	
	
	
	
	
 
	  
	
	  • 
 
 
 
	
	
	
		
	Beiträge: 38 
	Themen: 7 
	Danke erhalten: 0 in 0 Posts
 
Danke gesagt: 5 
	Registriert seit: 03.12.2016
	
	 
 
	
	
		Nochmals vielen Dank, 
 
das funktioniert jetzt ganz gut. 
Nur Eines ist komisch: Alle Objekte haben nach der Ausführung einen Umriss, das sollte nicht sein. 
Objekte ohne Umriss sollen auch ohne Umriss bleiben. Aber alle Linien sollen mit skaliert werden, das funktioniert. 
 
Noch eine Idee?  Danke, Norbert
	 
	
	
	
	
	
 
	  
	
	  • 
 
 
 
	
	
	
		
	Beiträge: 1.506 
	Themen: 11 
	Danke erhalten: 303 in 261 Posts
 
Danke gesagt: 30 
	Registriert seit: 24.03.2012
	
	 
 
	
	
		Hallo Norbert, 
 (10.11.2020, 08:57)nowa schrieb:  ...Gibt es eigentlich eine Übersicht dieser "Makro-Syntax"? 
Ich kann leider nur Fortran, Pascal, und Basic (nix objektorientiertes) 
Fortran ist objektorientiert und die Makros werden in Basic geschrieben, 
(wie beim C64 nur ohne Zeilennummern) also kannst Du ja schon fast alles! 
Eigene Objektklassen musst Du nicht anlegen, die liefert Corel.
 
Eine Übersicht der Syntax erreichst Du mit der F1-Taste und die Objekte 
stehen im Objekt-Katalog, den erreichst Du mit der F2-Taste.
  (10.11.2020, 18:22)nowa schrieb:  Nur Eines ist komisch: Alle Objekte haben nach der Ausführung einen Umriss, das sollte nicht sein. 
Objekte ohne Umriss sollen auch ohne Umriss bleiben. 
Das ist nicht komisch, das liegt an dem „Rutsch“. 
Du musst den Teil: „dann alle Linien mitscalieren“ aus dem „Rutsch“ nehmen und vorziehen:
 Code: Sub DiesUndDas() 
    Dim MitUmriss As ShapeRange ' ShapeRange-Objekt deklarieren 
    ActiveDocument.Unit = cdrMillimeter 
    Set MitUmriss = ActivePage.Shapes.FindShapes(, , True, "@com.Outline.Width > 0") 'alle Objekte mit Umriss finden 
    MitUmriss.Shapes.All.SetOutlinePropertiesEx ScaleWithShape:=cdrTrue 'alle Linien mitscalieren 
    With ActivePage.Shapes.All 
        .ConvertToCurves 'dann alles in Kurven umwandeln 
        .Group 'dann Alles gruppieren 
        .Stretch 0.1 'diese Gruppe dann auf 10% verkleinern 
        .CenterX = ActivePage.CenterX 'dann die Gruppe auf die Seite zentrieren 
        .CenterY = ActivePage.CenterY 
    End With 
    ActivePage.SetSize 210, 297 'dann die Seitengröße auf DIN A4 umstellen 
    ActiveWindow.ActiveView.ToFitPage '(Ansicht auf ganze Seite umstellen) 
End Sub
 
Gruß
 
Koter
	  
	
	
	
	
	
 
	  
	1 Benutzer bedankt sich bei koter für diesen Beitrag:1 Benutzer bedankt Danke koter für diesen Beitrag
	  • nowa
 
 
 
	
	
	
		
	Beiträge: 38 
	Themen: 7 
	Danke erhalten: 0 in 0 Posts
 
Danke gesagt: 5 
	Registriert seit: 03.12.2016
	
	 
 
	
	
		Wunderbar, du hast mir sehr geholfen. 
Jetzt funktioniert das wie gewünscht. 
 
Vielen Dank, Norbert
	 
	
	
	
	
	
 
	  
	
	  • 
 
 
 
	
	
	
		
	Beiträge: 38 
	Themen: 7 
	Danke erhalten: 0 in 0 Posts
 
Danke gesagt: 5 
	Registriert seit: 03.12.2016
	
	 
 
	
		
		
		20.11.2020, 11:01 
(Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2020, 11:06 von nowa.)
		
	 
	
		 (10.11.2020, 21:57)nowa schrieb:  Wunderbar, du hast mir sehr geholfen. 
Jetzt funktioniert das wie gewünscht. 
 
Vielen Dank, Norbert 
Nochmals vielen Dank. 
Kann ich die Funktion auf mehrseitige Dokumente erweitern? So eine Art Schleife über alle Seiten. 
Im Moment muss ich das Makro für jede Seite aufrufen.
 
LG Norbert
	  
	
	
	
	
	
 
	  
	
	  • 
 
 
 
	
	
	
		
	Beiträge: 1.506 
	Themen: 11 
	Danke erhalten: 303 in 261 Posts
 
Danke gesagt: 30 
	Registriert seit: 24.03.2012
	
	 
 
	
	
		Hallo Norbert, 
 (20.11.2020, 11:01)nowa schrieb:  ...Kann ich die Funktion auf mehrseitige Dokumente erweitern?... 
Ja, das geht so:
 Code: Sub DiesUndDasJedeSeite() 
    Dim Seite As Page 
    Dim MitUmriss As ShapeRange 
    ActiveDocument.Unit = cdrMillimeter 
    For Each Seite In ActiveDocument.Pages 
        Seite.Activate 
        ActiveDocument.BeginCommandGroup "DiesUndDas Seite" & Seite.Index 
        Set MitUmriss = Seite.Shapes.FindShapes(, , True, "@com.Outline.Width > 0") 
        MitUmriss.Shapes.All.SetOutlinePropertiesEx ScaleWithShape:=cdrTrue 
        With Seite.Shapes.All 
            .ConvertToCurves 
            .Group 
            .Stretch 0.1 
            .CenterX = ActivePage.CenterX 
            .CenterY = ActivePage.CenterY 
        End With 
        Seite.SetSize 210, 297 
        ActiveDocument.EndCommandGroup 
        ActiveWindow.ActiveView.ToFitPage 
    Next 
End Sub
 
Gruß
 
Koter
	  
	
	
	
	
	
 
	  
	1 Benutzer bedankt sich bei koter für diesen Beitrag:1 Benutzer bedankt Danke koter für diesen Beitrag
	  • nowa
 
 
 
	
	
	
		
	Beiträge: 38 
	Themen: 7 
	Danke erhalten: 0 in 0 Posts
 
Danke gesagt: 5 
	Registriert seit: 03.12.2016
	
	 
 
	
		
		
  
		22.11.2020, 10:48 
		
	 
	
		Ja Super    
Vielen lieben Dank, Norbert
	  
	
	
	
	
	
 
	  
	
	  • 
 
 
 
	
	
	
		
	Beiträge: 38 
	Themen: 7 
	Danke erhalten: 0 in 0 Posts
 
Danke gesagt: 5 
	Registriert seit: 03.12.2016
	
	 
 
	
		
		
  
		11.12.2020, 09:35 
(Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2020, 09:37 von nowa.)
		
	 
	
		Guten Morgen, 
 
ein kleines Problem habe ich noch. 
Wenn das Dokument Hilfslinien enthält, macht das Probleme auf Seite 1. Ist eigentlich logisch. 
Löscht man die Hilfslinien vor dem Ausführen des Makros, dann funktioniert das wunderbar. 
Gibt es einen Befehl, der alle Hilfslinien löscht? Am besten im Makro selbst. 
In früheren Versionen waren die Hilfslinien einfacher/schneller zu löschen. In  der X18 muss ich immer über das Andockfester gehen. 
 
Liebe Grüße, Norbert
	 
	
	
	
	
	
 
	  
	
	  • 
 
 
 
	 
 |