Office - Word, Excel und Co. 9.744 Themen, 41.408 Beiträge

Word: Text über Makro als Grafik einfügen

Achim_H / 3 Antworten / Baumansicht Nickles

Hallo liebe Leute,

wir brauchen in unserer Firma oft folgenden Ablauf im Word-Programm:

Es ist ein Dokument geöffnet, das aus einer oder mehreren Seiten bestehen kann. Der gesamte Text wird markiert und in die Zwischenablage kopiert.

Anschließend wird ein neues leeres Dokument gestartet und der zuvor kopierte Text über "Bearbeiten", "Inhalte einfügen" als Grafik in das neue Dokument eingefügt.

Diese Zeremonie würde ich gerne mit dem Makrorekorder aufzeichnen, damit das ganze bequem per Knopfdruck ablaufen kann.

Das Problem: Word XP fügt von dem kopierten Text lediglich die komplette erste Seite als Grafik in das neue Dokument ein - die restlichen Seiten werden weggelassen. Besteht der ursprüngliche Text also aus mehr als einer einzigen Seite, muss jede Seite einzeln kopiert und als Grafik in den neuen Text eingefügt werden.


Außerdem: wenn man das ganze mit dem Makrorekorder aufzeichnet, fügt Word dann zwar den gesmten kopierten Text ein, nur leiderf nicht als Grafik, sondern als normalen Text. 

Meine Frage: gibt es da eine Möglichkeit das Programm zu zwingen, entweder alle Seiten auf einmal einzufügen, oder gibt es bei der Visual-Basic Prozedur eine Möglichkeit alle Seiten nacheinander abarbeiten zu lassen?

Bin für jeden Tipp dankbar!

Achim

bei Antwort benachrichtigen
Uli M Achim_H „Word: Text über Makro als Grafik einfügen“
Optionen

Dein Problem wird sein, dass die Grafik eben zu groß für eine Seite ist.
Wenn der Text nicht als Grafik eingefügt wird, hast du dies beim Aufzeichnen wohl auch nicht getan.

Einzelne Seiten kannst du z.B. wie folgt markieren (Seite als Objekt gibt es nicht im Word-Modell):
Dim i As Integer, iGesamt As Integer
iGesamt = ActiveDocument.ComputeStatistics(wdStatisticPages)
For i = 1 To iGesamt
Selection.GoTo what:=wdGoToPage, Count:=i
Selection.Bookmarks("\\Page").Select
' jetzt Aktionen
Next i

bei Antwort benachrichtigen
Achim_H Uli M „Dein Problem wird sein, dass die Grafik eben zu groß für eine Seite ist. Wenn...“
Optionen

Hallo Uli,

danke für Deinen Hinweis. Leider kenne ich mich mit Visual Basic nicht besonders gut aus. Mein Problem ist wirklich an erster Stelle, das Word die Aktion "Bearbeiten" - "Inhalte einfügen" "Grafik" oder "Bild" nicht korrekt mit dem Makrorekorder aufzeichnet:

Sub Makro1()
'
' Makro1 Makro
' Makro aufgezeichnet am 27.03.2003 von Achim Hasse
'
Selection.WholeStory
Selection.Copy
Documents.Add DocumentType:=wdNewBlankDocument
Selection.PasteAndFormat (wdPasteDefault)
End Sub
Sub Makro2()
'
' Makro2 Makro
' Makro aufgezeichnet am 27.03.2003 von Achim Hasse
'
Selection.WholeStory
Selection.Copy
Documents.Add DocumentType:=wdNewBlankDocument
Selection.PasteAndFormat (wdPasteDefault)
End Sub

Bei der oberen Prozedur habe ich Inhalte einfügen als Grafik gewählt und bei der unteren habe ich einfach auf den einfügen Knopf gedrückt, sodass der Text wirklich nur als Text eingefügt worden ist.

Bei beiden Prozeduren hat Word jedoch die gleiche Befehlzeile aufgezeichnet nämlich:

Selection.PasteAndFormat (wdPasteDefault)

Habe übrigens nur 5 Zeilen Text kopiert, da Du ja meintest es läge evtl. an der zu großen Datenmenge.

Also irgendwie haut das alles nicht hin: das "wdPasteDefault" lässt sich natürlich auch nicht einfach durch "wdPasteMetafilePicture" ersetzen, dann findet er das Objekt nicht.

Vielleicht fällt Dir ja noch was ein, das wäre prima.

Danke Achim

bei Antwort benachrichtigen
Uli M Achim_H „Hallo Uli, danke für Deinen Hinweis. Leider kenne ich mich mit Visual Basic...“
Optionen

Versuche es mit:
Selection.PasteSpecial DataType:=wdPasteMetafilePicture
Die Methode kennt die folgenden weiteren Parameter (entspr. den Optionen des Dialogs):
Link, Placement, DisplayAsIcon

PS: Das "Nur Aufzeichnen" von Makros ohne weitere Überarbeitung, wenn diese dann weiter gegeben werden sollen, ist fast nie ausreichend.
Hier wird z.B. stets zunächst der gesamte Inhalt der Hauptdokumentkomponente markiert, die Ausgangsmarkierung mithin ignoriert.

bei Antwort benachrichtigen