Word - Makro für Fomeleditor

Hallo (Makro-) Experten!

Ich habe viele Word-Dokumente (Office 2000), die zahlreiche Formel-Objekte enthalten. Wenn so ein Dokument umformatiert wird (z.B. Schriftgröße oder Schriftart geändert), dann bleiben die Formeln erst mal so wie sie waren, da der Formeleditor seine eigenen Einstellungen dafür hat. Ich muss dann (mit neuen Einstellungen) jede Formel einzeln öffnen (es sind wirklich viele !!!) und wieder schließen, damit die geänderten Formateinstellungen aktiviert werden …

Hat jemand eine Idee wie man das einfacher machen könnte ? Z.B. ein Makro, der das aktive Dok. nach allen Formel-Objekten durchsucht, diese nacheinander öffnet und wieder schließt ?

Gruss Kurt

Hallo Kurt,

das Problem hatte ich auch schon und bin immer daran gescheitert, dass ich mit einem Makro wohl den Formeleditor aufrufen, ihn aber nicht wieder schließen konnte.

Folgendes Visual Basic Makro funktioniert jetzt bei mir:

(Dokument vorher öffnen, den Cursor an die gewünschte Startposition bringen und natürlich die neuen Formeleditor-Einstellungen vorher einmal machen)

Sub FormelnAktualisieren()
On Error GoTo Ende:
Do
Selection.GoTo What:=wdGoToEquation, Which:=wdGoToNext, Count:=1, Name:=""
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
If Selection.Type = wdSelectionShape Then
Selection.ShapeRange(1).ConvertToInlineShape.Select
End If
Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:=„Equation.3“, _
DisplayAsIcon:=False
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop
Ende:
MsgBox „Keine weitere Formel im Dokument“
End Sub

Viel Spaß beim Ausprobieren!
Gruß Jutta

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke !!!
Hallo Jutta,
vielen Dank , es klappt !
Dein Makro spart mir tausende Mausklicks …

Gruss kr

Für die Benutzer von MathType (bei mir Version 6.9b):
Ersetze „Equation.3“ durch „Equation.DSMT4“ und dann läuft das Ganze auch dort!
Ich hatte übrigens auch Probleme mit plötzlichem Höherstellen von Formeln und verwirrender Skalierung ohne dass ich irgendwas verändert hatte.
Wird alles durch diesen neuen Quelltext behoben:

Sub FormelnAktualisieren()

Selection.WholeStory ’ Markiere alles
Selection.Font.Position = 0 ’ Alle Zeichenabstände auf Position „Normal“ stellen
Selection.HomeKey Unit:=wdStory ’ Gehe ganz an den Anfang des Dokuments

On Error GoTo Ende:
Do
’ Gehe zur nächsten Formel
Selection.GoTo What:=wdGoToEquation, Which:=wdGoToNext, Count:=1, Name:=""
’ Markiere die Formel durch einmal rechts und extend der Selection
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
If Selection.Type = wdSelectionShape Then
Selection.ShapeRange(1).ConvertToInlineShape.Select
End If
With Selection.InlineShapes(1)
’ Wenn MathType installiert ist -> „Equation.DSMT4“
’ Besitzt man „nur“ den alten Formeleditor 3.0 -> „Equation.3“
.OLEFormat.ConvertTo ClassType:=„Equation.DSMT4“, DisplayAsIcon:=False
.ScaleHeight = 100 ’ Skalierung auf 100%
.ScaleWidth = 100 ’ Skalierung auf 100%
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop

Ende:
MsgBox „Keine weitere Formel im Dokument“
End Sub

Ich wünsche euch viel Spaß damit!

Angela

Hallo zusammen,
ein paar Korrekturen nachdem das Ganze ein bei Formeln innerhalb von Tabellen gesponnen hat:

Sub FormelnAktualisieren()

Selection.WholeStory ' Markiere alles
Selection.Font.Position = 0 ' Alle Zeichen auf Position "Normal" stellen
Selection.HomeKey Unit:=wdStory ' Gehe ganz an den Anfang des Dokuments

Do
    ' Gehe zur nächsten Formel
    Selection.GoTo What:=wdGoToEquation, Which:=wdGoToNext
    
    ' Markiere die Formel durch einmal rechts und extend der Selection
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    If Selection.Type = wdSelectionShape Then
        Selection.ShapeRange(1).ConvertToInlineShape.Select
    End If
    
    If Selection.Type <> wdSelectionInlineShape Then
        Exit Do ' Abbruch wenn keine Formel mehr gefunden
    End If
    
    ' Achtung: NICHT mit "With Selection.InlineShapes(1)" arbeiten,
    ' weil dieses Objekt durch ConvertTo gelöscht und neu erzeugt wird
    ' Die nachfolgenden Operationen darauf würden deshalb Fehler erzeugen...
    
    ' Wenn MathType installiert ist -> "Equation.DSMT4"
    ' Besitzt man "nur" den alten Formeleditor 3.0 -> "Equation.3"
    Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:="Equation.DSMT4", DisplayAsIcon:=False
    
    ' Manchmal skaliert Word selbständig -> Ich will 100%!
    Selection.InlineShapes(1).ScaleHeight = 100 ' Skalierung auf 100%
    Selection.InlineShapes(1).ScaleWidth = 100 ' Skalierung auf 100%

    Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop

MsgBox "Keine weitere Formel im Dokument"
End Sub