expertenaustausch > microsoft.* > microsoft.word.vba

Claudia (18.05.2016, 19:33)
Hallo Word-Gemeinde,

ich habe hier ein Problem mit der Anzeige eines internen Dialogfensters.

Der User soll eine Grafik/Foto/Bild markieren und dann über eine Schaltfläche das Dialogfenster "Grafik formatieren" angezeigt bekommen, wo er dann einen Alternativtext für die Grafik eingeben kann.

Meine Makro sieht so aus:

If (Selection.InlineShapes.Count > 0) Then
Dialogs(wdDialogFormatPicture).Display
End If

Erst prüfe ich, ob eine Grafik markiert ist, der Rückgabewert ist1 (ist also eine markiert), er geht dann auch befehlsmäßig weiter, aber dann kommt die Fehlermeldung:

Laufzeitfehler 4605 - Die Methode oder Eigenschaft ist nicht verfügbar, weil die aktuelle Markierung keine Grafik ist.

Ich habe schon unterschiedliche Grafiken markiert (Foto, Logos, Cliparts) -kommt immer der Fehler.

Mein PC ist mit Windows 7 und Word 2010 bestückt.

Vielen Dank für Eure Hilfe

Grüße
Claudia
Wolfram Jahn (18.05.2016, 20:44)
Am 18.05.16 um 19:33 schrieb Claudia:
> weil die aktuelle Markierung keine Grafik ist.


Ohne es ausprobiert zu haben würde ich mal raten, dass sowas fehlt wie

Selection.InlineShapes(1).Select

oder vielleicht noch eine Ebene tiefer rein, solange bis die aktuelle
Markierung nach Meinung von Word eine Grafik ist.

Wolfram
Bernhard Sander (19.05.2016, 13:10)
Hallo Claudia,

> Meine Makro sieht so aus:
> If (Selection.InlineShapes.Count > 0) Then
> Dialogs(wdDialogFormatPicture).Display
> End If
> Erst prüfe ich, ob eine Grafik markiert ist, der Rückgabewert ist 1 (ist also eine markiert), er geht dann auch befehlsmäßig weiter, aber dann kommt die Fehlermeldung:
> Laufzeitfehler 4605 - Die Methode oder Eigenschaft ist nicht verfügbar, weil die aktuelle Markierung keine Grafik ist.


Microsoft hat an dieser Stelle den Umstieg auf das neuere Dateiformat nicht vollzogen:


Wenn Du das Dokument im alten Format (.doc) speicherst, erscheint zwar ein Dialog, der sieht aber ganz anders aus.

Gruß
Bernhard Sander
Claudia (20.05.2016, 09:56)
Am Mittwoch, 18. Mai 2016 19:33:04 UTC+2 schrieb Claudia:
[..]
> Vielen Dank für Eure Hilfe
> Grüße
> Claudia


Hallo Bernhard, hallo Wolfram,

vielen Dank für Eure Rückmeldungen, geprüft ist ja, ob ein Shape markiert ist :-). Wenn allerdings der Befehl in Word 2010 nicht mehr zur Verfügung steht, dann habe ich Pech (Danke Bernhard für den Link). Werde wohl den Umweg über einen Input-Dialog gehen und es dann über VBA eintragen lassen.

Viele Grüße
Claudia
Rainer H. Rauschenberg (21.05.2016, 12:51)
On 2016-05-20, Claudia <claudia.koch.muc> wrote:
> Am Mittwoch, 18. Mai 2016 19:33:04 UTC+2 schrieb Claudia:


>> Meine Makro sieht so aus:
>> If (Selection.InlineShapes.Count > 0) Then
>> Dialogs(wdDialogFormatPicture).Display
>> End If


> geprüft ist ja, ob ein Shape markiert ist :-).


Nein, geprüft wird, ob mindestens 1 InlineShape in der Markierung liegt,
die Markierung kann sehr wohl mehr umfassen. Genau 1 InlineShape (und
sonst nix) umfasst die Markierung, wenn

(selection.range.Start = Selection.InlineShapes(1).Range.Start) and (selection.range.end = Selection.InlineShapes(1).Range.end)
Wolfram Jahn (22.05.2016, 19:18)
Am 21.05.16 um 12:51 schrieb Rainer H. Rauschenberg:
> enau 1 InlineShape (und
> sonst nix) umfasst die Markierung, wenn
> (selection.range.Start = Selection.InlineShapes(1).Range.Start) and (selection.range.end = Selection.InlineShapes(1).Range.end) Völlig korrekt.


Leider lässt sich der Dialog auch dann nicht aufrufen, wenn obige
Bedingung wahr ist.

Wolfram
Ähnliche Themen