chris-rgbg
Goto Top

Mit Makro Formel im Formeleditor (Word) generieren

Hallo,

weiß jmd. eine Möglichkeit, wie ich in Word ein Makro erstelle, dass mir eine bestimmte Formel ausgibt, die im Formeleditor erstellt wurde?

Ich gehe vor wie bei jedem Makro, indem ich die Aufzeichnung beginne, dann alles durchführe umd am Ende die Aufzeichnung stoppe. Funktioniert bei eigentlich allem, was ich mache, aber eine Formel lässt sich einfach nicht einbinden.

Konkret: Ich hätte gerne den mathematischen Ausdruck "Strecke AB", also AB mit Überstreichung
(\overline AB?)

Wenn ich die Schritte aufzeichne (inkl. Eingabe AB) und das Makro ausführe, erscheint stets die Fehlermeldung

"Laufzeitfehler 5941: Das angeforderte Element ist nicht in der Sammlung vorhanden."

Der aufgezeichnete Code lautet:

Sub formel()
'  
' formel Makro  
'  
'  
    Selection.OMaths(1).Functions.Add(Selection.Range, wdOMathFunctionBar).Bar _
        .BarTop = True
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="AB"  
End Sub

Weiß jmd. Rat?

Danke und Gruß

Christoph

Content-ID: 670638

Url: https://administrator.de/forum/mit-makro-formel-im-formeleditor-word-generieren-670638.html

Printed on: January 14, 2025 at 05:01 o'clock

gastric
gastric Jan 10, 2025, updated at Jan 11, 2025 at 06:51:49 (UTC)
Goto Top
Laufzeitfehler 5941: Das angeforderte Element ist nicht in der Sammlung vorhanden."
Weil du das OMaths Objekt vorher nicht erstellt hast, deswegen der Fehler ....
Sub CreateOMath()
    Set objRange = Selection.Range 
    objRange.Text = "Celsius = (5/9)(Fahrenheit - 32)"   
    Set objRange = Selection.OMaths.Add(objRange) 
    objRange.OMaths(1).BuildUp
End Sub

Lesen hilft

Gruß gastric
Chris-Rgbg
Chris-Rgbg Jan 13, 2025 updated at 18:01:09 (UTC)
Goto Top
Vielen Dank,
also der obige Block funktioniert.
Hab das nun auch probiert mit overline,
aber das versteht er nicht:

Sub overline()
    Set objRange = Selection.Range
    objRange.Text = "\overline{Text}"  
    Set objRange = Selection.OMaths.Add(objRange)
    objRange.OMaths(1).BuildUp
End Sub
Chris-Rgbg
Chris-Rgbg Jan 13, 2025 at 09:36:46 (UTC)
Goto Top
Btw: Auch ChatGPT konnte nicht helfen (bis mein free-Kontingent ausgeschöpft war) ... er erkannte schon, dass

Das Problem liegt vermutlich daran, dass der Code zwar den Text einfügt und den Bereich als mathematische Formel formatiert, aber \overline{} nicht korrekt umgesetzt wird. Word nutzt für mathematische Formeln nicht direkt LaTeX-Befehle, sondern hat eigene interne Methoden für mathematische Ausdrücke.

aber alle Alternativen, die vorgeschlagen wurden, haben auch nicht geklappt face-confused
gastric
gastric Jan 13, 2025 updated at 09:45:17 (UTC)
Goto Top
Lies dir den Text aus einem vorhandenen OMaths Objekt per VBA aus in dem du deine Formel eingestellt hast wie sie sein soll und schon hast du die richtige Bezeichnung für das Einfügen in den VBA-Code...
Nicht denken sondern nachdenken 😉, das kann eine KI noch nicht, da kannst du so viel KI Energie verschwenden wie du willst, Schadet am Ende immer nur der Umwelt.
Chris-Rgbg
Chris-Rgbg Jan 13, 2025 at 18:05:47 (UTC)
Goto Top
Ich bekomm die Bausteine einfach nicht zusammen ... face-confused
Für das Überstreichen brauche ich (s. o.):

Selection.OMaths(1).Functions.Add(Selection.Range, wdOMathFunctionBar).Bar _
        .BarTop = True
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="AB"    

Ich hab den deinen Code oben schon verstanden (glaub ich):
Erst wird ein Objekt erstellt,
dann der Text eingegeben und am Ende dieses Objekt dem Formeleditor "übergeben".

Aber beim gewünschten Code oben wird das OMaths ausgewählt, was ja vorab nicht definiert wurde?
Irgendwo da liegt das Problem denk ich