Shapes in PowerPoint speichern und laden
lima-city → Forum → Programmiersprachen → Basic
ablegen
auslese
beispiel
besitzen
bild
eigenschaft
einbinden
element
erstellen
farbe
folie
paste
position
set
speichern
text
type
unterschiedlichen text
verschiedenen text
werte speichern
-
Hallo,
ich schreibe gerade ein Makro für mehrsprachige Präsentationen in PowerPoint. Dieses soll teilweise alle Shapes auf einer Präsentation (mit Formatierung) abspeichern, austauschen und zu beliebigem Zeitpunkt wieder einfügen.
Das ablegen eines Shapes in einer Variablen hat funktioniert, jedoch weiß ich nicht, wie ich dieses Shape wieder auf der Seite einbinden soll. Copy und Paste aus der Variable funktioniert nicht.
Gibt es diesbezüglich eine Möglichkeit oder einen anderen Ansatz um den Inhalt einer Folie zu sichern und wieder zu laden? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
tiel schrieb:
Hallo,
Das ablegen eines Shapes in einer Variablen hat funktioniert, jedoch weiß ich nicht, wie ich dieses Shape wieder auf der Seite einbinden soll. Copy und Paste aus der Variable funktioniert nicht.
Wie wäre es hiermit?
Application.ActivePresentation.Slides(Index).Shapes.AddShape(Type, Left, Top, Width, Height)
Ich denke mal, du speicherst dein Shape wie folgt:
Dim MyShape1 As Shape
Set MyShape1 = Application.ActivePresentation.Slides(1).Shapes(1)
Dann sieht das Einfügen etwa so aus:
Application.ActivePresentation.Slides(2).Shapes.AddShape MyShape1.Type, MyShape1.Left, MyShape1.Top, MyShape1.Width, MyShape1.Height
Aber eigentlich brauchst du doch nicht das ganze Shape speichern, denn bei einer mehrsprachigen Präsentation geht es doch nur um unterschiedlichen Text, das heißt, du brauchst auch nur die verschiedenen Text-Werte speichern / auslesen von allen Elementen. -
Danke für die schnelle Antwort!
Ich denke mal, du speicherst dein Shape wie folgt:
Dim MyShape1 As Shape
Set MyShape1 = Application.ActivePresentation.Slides(1).Shapes(1)
Genau so mache ich das! Jedoch benutze ich einen dreidimensionalen Array.
Mittlerweile habe ich heraus gefunden, dass es genau daran liegt. Speicher ich das Shape in einer Variablen, so funktioniert Copy und Paste.
Aber eigentlich brauchst du doch nicht das ganze Shape speichern, denn bei einer mehrsprachigen Präsentation geht es doch nur um unterschiedlichen Text, das heißt, du brauchst auch nur die verschiedenen Text-Werte speichern / auslesen von allen Elementen.
So einfach ist das leider nicht: Anfangs habe ich diese Überlegung auch gemacht. Aber da unterschiedliche Sprachen verwendet werden, sind auch die Texte von unterschiedlicher Länge. Hinzu kommt, dass es ja auch noch Bilder auf den Folien geben kann. Was bedeutet, dass die Shapes bei unterschiedlichen Sprachen auch unterschiedliche Größen und Positionen haben können.
Zusätzlich besitzen aber die Shapes noch weitere Eigenschaften, die meiner Ansicht nach ebenfalls gesichert werden müssen: Hintergrundfarbe, Einrückungen, Farbe (von Anstrichen) im Text usw.
Ich wollte eine Möglichkeit finden, wie ich dies recht einfach sichern und einfügen kann ohne jede Eigenschaft extra zu vergeben. Copy und Paste sind ja Funktionen, die das können. Nur dass die nicht aus einer Variable heraus funktionieren.
Beitrag geändert: 16.3.2008 10:51:39 von tiel
Beitrag geändert: 16.3.2008 13:25:14 von tiel -
Zunächst: Es funktioniert auch mit 3-dimensionalen Arrays:
Beispiel mit einem 10x10x10 Felder großem Array:
Dim MyShapes(1 To 10, 1 To 10, 1 To 10) As Shape
Set MyShapes(1, 1, 1) = Application.ActivePresentation.Slides(1).Shapes(1)
Application.ActivePresentation.Slides(1).Shapes.AddShape MyShapes(1, 1, 1).Type, MyShapes(1, 1, 1).Left, MyShapes(1, 1, 1).Top, MyShapes(1, 1, 1).Width, MyShapes(1, 1, 1).Height
Es geht doch nur darum, dass der Text verschieden ist bei einer mehrsprachigen Präsentation, warum willst du dann auch Farbe, Position etc. speichern... das ändert sich doch nicht.
Wegen der Größe muss es eben so gelöst werden, dass bereits beim Erstellen der Präsentation die Textfelder etc. immer groß genug sind.
Alternativ könntest du, statt nur Shapes zu speichern, gleich die komplette Folie sichern. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage