Discussion:
Zugriff auf bestimmte Objecte bzw. Shapes auf einer Folie (Slide)
(zu alt für eine Antwort)
Marcel Zollhöfer
2004-06-09 09:12:20 UTC
Permalink
Hallo,

ich möchte auf verschiedene Objecte (Diagramme; Graph)
und Shapes (Text Box bzw. Rectangle) zugreifen.

Dabei verwende ich folgende Funktion:

Function fnct_TextRange(ByRef preBASF As Presentation,
ByRef intSlideNr As Integer, ByRef strShape As String) As
PowerPoint.TextRange
Set fnct_TextRange = _
preBASF.Slides("Slide" & intSlideNr).Shapes
(strShape).TextFrame.TextRange

'SelectShape preBASF, intSlideNr, strShape

'Set fnct_TextRange =
preBASF.Application.ActiveWindow.Selection.ShapeRange.Text
Frame.TextRange

End Function

Leider funktioniert da irgendetwas nicht.
Die ersten male funktioniert alles einwandfrei, dann
kommt aber irgendwann die Fehlermeldung "Das Element mit
dem angegebenen Namen wurde nicht gefunden."

Wenn ich alledings die Eigenschaften im Direktfenser
mit "ActiveWindow.Selection.ShapeRange.Name"
bzw. "ActiveWindow.Selection.SlideRange.Name" abfrage,
ist das Element richtig adressiert!

Was mach ich den falsch, oder ist Powerpoint schuld?

Ein anderes Problem in diesem Zusammenhang habe ich auch
mit den Namen der einzelnen Element.

Dem Slide.Namen passiert bei Änderungen in der
Präsentation nichts, aber den Object.Namen schon.

Er bekommt nach Änderungen in meiner Präsentation
teilweise einen neuen Namen verpasst (Object 1033 ->
Object 12).
Ich ging eigentlich davon aus, das jedes Object je Folie
einen eindeutigen Namen erhält, den das Object nicht mehr
verliert.
Liege ich da falsch?

Vielen Dank schonmal für Eure Antworten

MfG
Marcel
Hans Hofmann
2004-06-09 12:47:41 UTC
Permalink
On Wed, 9 Jun 2004 02:12:20 -0700, Marcel Zollhöfer
<***@discussions.microsoft.com> wrote:

Hallo Marcel,
Post by Marcel Zollhöfer
ich möchte auf verschiedene Objecte (Diagramme; Graph)
und Shapes (Text Box bzw. Rectangle) zugreifen.
8<----------

Zur Deinem Code kann man ohne Kenntnis des Umfeldes nix sagen, außer
dass Du die Fehlemeldung ordentlich debuggen musst, um dahinter zu
kommen welches Element mit welchem Namen nicht gefunden wird.
Wieso referenzierst du die Slides bzw Shapes über Textstrings, es
bietet sich an die nummerische Listenform zu verwenden...
Post by Marcel Zollhöfer
Ein anderes Problem in diesem Zusammenhang habe ich auch
mit den Namen der einzelnen Element.
Dem Slide.Namen passiert bei Änderungen in der
Präsentation nichts, aber den Object.Namen schon.
Er bekommt nach Änderungen in meiner Präsentation
teilweise einen neuen Namen verpasst (Object 1033 ->
Object 12).
Ich ging eigentlich davon aus, das jedes Object je Folie
einen eindeutigen Namen erhält, den das Object nicht mehr
verliert.
Liege ich da falsch?
Nein, ein Objekt behält seinen Namen lebenslang. Die Objektnummer wird
beim Erzeugen über alle Shapes hochgezählt, was inpliziert (ohne
Eingriffe in die Namensgebung), dass auf Deiner Folie bereits 1033
Objekte angelegt worden sind. Kann das sein?


Gruß HW

PowerPoint-User-Treff & Info's: www.ppt-user.de
WebSite Powerpoint interaktiv: www.lemitec.de/ppt
Mail Reply: remove devnull :-(
a***@discussions.microsoft.com
2004-06-09 18:20:12 UTC
Permalink
Hallo,
Post by Hans Hofmann
Post by Hans Hofmann
Zur Deinem Code kann man ohne Kenntnis des Umfeldes nix
sagen, außer
dass Du die Fehlemeldung ordentlich debuggen musst, um
dahinter zu
kommen welches Element mit welchem Namen nicht gefunden
wird.
Das Problem ist ja gerade, das es das Element wirklich
gibt!
In einem kleinen Workaround duchlaufe ich alle Shapes der
bestimmten Folie und wenn das Shape mit dem bestimmten
Namen gefunden wird, markiere ich das Shape.
Wenn ich jetzt die Selection(.shaperange. ...)) verwende
funktioniert es!!!
Post by Hans Hofmann
Post by Hans Hofmann
Wieso referenzierst du die Slides bzw Shapes über
Textstrings, es
bietet sich an die nummerische Listenform zu
verwenden...
... zugegeben wäre auch möglich (und wahrscheinlich auch
schneller); gibt halt mehrere Wege ... :-)
Post by Hans Hofmann
Nein, ein Objekt behält seinen Namen lebenslang. Die
Objektnummer wird
Post by Hans Hofmann
beim Erzeugen über alle Shapes hochgezählt, was
inpliziert (ohne
Post by Hans Hofmann
Eingriffe in die Namensgebung), dass auf Deiner Folie
bereits 1033
Post by Hans Hofmann
Objekte angelegt worden sind. Kann das sein?
Tja, eben nicht! Das Object 1033 gibt es wirklich, ich
habe aber keine 1033 Object auf dem Slide!!!
Aber die Nummer vergibt Powerpoint.
Allerdings sind diese hohen Nummern bei der naechsen
unplanmaessigen umnummerierung - bei der Speicherung der
Vorlage - Kandidaten, die einen neuen Namen bekommen ..

MfG
Marcel

... der jetzt mal die Indexierung ueber den Index statt
der Namen versucht - man kann ja nie wissen ..
Hans Hofmann
2004-06-10 09:17:59 UTC
Permalink
On Wed, 9 Jun 2004 11:20:12 -0700,
<***@discussions.microsoft.com> wrote:

Hallo,
8<-----
Post by a***@discussions.microsoft.com
Das Problem ist ja gerade, das es das Element wirklich
gibt!
EIN existierendes Objekt muss sich auch adressieren lassen und
benötigt dann auch kein Shaperange...
Kann man das Gesamtkunstwerk irgendwo besichtigen?

8<-------------
Post by a***@discussions.microsoft.com
Tja, eben nicht! Das Object 1033 gibt es wirklich, ich
habe aber keine 1033 Object auf dem Slide!!!
Aber die Nummer vergibt Powerpoint.
Das ist klar, aber irgenwo müssten dann Objekte erzeugt (und wieder
gelöscht) werden?
Post by a***@discussions.microsoft.com
Allerdings sind diese hohen Nummern bei der naechsen
unplanmaessigen umnummerierung - bei der Speicherung der
Vorlage - Kandidaten, die einen neuen Namen bekommen ..
Wer nummeriert denn da was um?


Gruß HW

PowerPoint-User-Treff & Info's: www.ppt-user.de
WebSite Powerpoint interaktiv: www.lemitec.de/ppt
Mail Reply: remove devnull :-(

Loading...