Word VBA Textbox-Layout

weer

Stammgast
Hallo

Ich erstelle mit folgendem Makro, das ich irgendwann einmal im Netz gefunden hatte und das auch funktioniert, in einem Word-Dokument ein Textfeld (Textbox). Word 2013:

Code:
siPos = Selection.Information(wdVerticalPositionRelativeToPage)
Set SHp = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, siPos, 300, 100)
Das damit erstellte Textfeld hat die Layout-Option "Vor den Text".

Ich möchte aber die Layout-Option "Oben und unten" festlegen.

Wie kann ich diese Layout-Option "Oben und unten" im Makro festlegen? – Mit dem Makro-Rekorder geht das leider nicht. Der bleibt leer. Und im Internet habe ich vergeblich gesucht.

Vielen Dank für Eure Hilfe
Niclaus
 

nochEinAndreas

Stammgast
Krücke

Hallo Niclaus,

ich habe auch noch mal im Netz und in der VBA-Hilfe zu Word gestöbert. Es schein definitiv keine Eingeschaft zu geben, mit der man den Textumbruch einstellen kann. Die einzige (und holprige) Krücke, die mit eingefallen ist: Lass den Makro die Tastenanschläge senden, die nötig sind. Bei mir hat es mit folgendem Code funktioniert (die Textbox muss vorher ausgewählt sein):

Code:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub UntenUndOben()
    Sleep 500  'Warten, bis das Fenster für den Makrostart zu ist.
    SendKeys "%J", True ' Öffnet den Format-Reiter
    Sleep 200
    SendKeys "J", True  ' Wählt Textumbruch aus
    Sleep 200
    SendKeys "U", True  ' Wählt "Unten und oben" aus.
End Sub

Grüße, Andreas
 

weer

Stammgast
Grüezi Andreas

Ja, mit Krücken - fast wie im letzten Jahrtausend ;-))

Leider funktioniert Dein Makro bei mir nicht. Liegt es möglicherweise am Kernel 32? - Ich kann mit Deinem Makro gar keinen Reiter aktivieren. Auch nicht mit "%R" z.B. das Menü Start. Ich arbeite mit Word 2013. - Dazu kommt: Es wird jedes mal NumLock auf meinem Zahlenblock rechts neben der Tastatur ausgeschaltet.

Und dann kommt noch dazu: Bei mir muss ich den Reiter Format mit ALT J M aktivieren, nicht mit J. Und den Menüpunkt Textumbruch mit "ß", nicht mit "J". Und das, wo es das "ß" auf der CH-Tastatur gar nicht gibt! U für Unten und oben, das ist auch bei mir so.

Woher diese anderen Menü-Bezeichnungen wohl kommen? Vielleicht weil ich einige individuelle Registerkarten ins Menüband eingefügt habe?

Ich habe mein Makro umgeschrieben:

Code:
Sub nm22()
siPos = Selection.Information(wdVerticalPositionRelativeToPage)
Set SHp = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, siPos, 300, 100)
shpn = SHp.Name
shc = ActiveDocument.Shapes.Count
For i = 1 To shc
    ActiveDocument.Shapes(i).Select
    nn = ActiveDocument.Shapes(i).Name
        If nn = shpn Then
            ActiveDocument.Shapes(i).Select
            Exit Sub
        End If
Next
End Sub
So ist die neu eingefügte TextBox markiert und ich kann dann mit dem Layout-Symbol, das rechts von der TextBox erscheint, die Oben und Unten Einstellung auswählen. Einen Schritt weiter bin ich so wenigstens.

Mein Problem dabei war: Wie kann ich die neu eingefügte TextBox aktivieren. Mit dem Shapes-Namen selber ging das nicht. Deshalb so umständlich zusammen mit Shapes.Count. - Hast Du da eine elegantere Lösung?

Noch einmal vielen Dank und viele Grüsse
Niclaus
 
Zuletzt bearbeitet:

nochEinAndreas

Stammgast
Ich noch mal

Hallo Niclaus,

ich kann mir eigentlich kaum denken, dass es wegen 32 oder 64 Bit nicht klappt. Da könnte nur der Sleep Probleme machen. Aber du kannst es ja mal versuchen: Ersetze die bisherige "Private Declare..." Zeile durch

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Ja, das mit der NumLock Taste ist mir eben auch aufgefallen. keine Ahnung, was das miteinander zu tun hat ...:(

Wenn ich bei mir (Word 2016) die Alt-Taste drücke, dann zeigt er mir zwar für das Format-Menü auch JM an. Als ich das im Makro versucht habe, ging's aber schief. Weder

Sendkeys "%JM"

noch

Sendkeys "%J%M"

noch

Sendkeys "%J"
Sendkeys "%M"

hat funktioniert.
Wenn ich in Word einfach Alt-j drücke, geht das Format-Menü trotzdem auf, obwohl es ja eigentlich JM haben möchte. Hast du das bei dir mal ausprobiert?

Das mit dem Alt-ß für Textumbruch ist ja höchst seltsam. Bei mir passiert da gar nichts. Auch nicht, wenn ich testhalber eine neue Register-Karte einfüge. Es bleibt bei mir bei Alt-j.

Also, ich gebe zu, mein Makro war ein ziemlicher Schuss ins Blaue, mit wenig Erfolg.
Auch das mit dem Sleep, um Timing-Probleme zu umschiffen, gefällt mir selbst nicht.

Tut mir Leid, dass ich so wenig hilfreich sein konnte. Ich bastle noch mal ein Bisschen weiter. Vielleicht kommt mir noch die Erleuchtung.

Bis dahin Grüße,
Andreas
 

weer

Stammgast
ich kann mir eigentlich kaum denken, dass es wegen 32 oder 64 Bit nicht klappt. Da könnte nur der Sleep Probleme machen. Aber du kannst es ja mal versuchen: Ersetze die bisherige "Private Declare..." Zeile durch
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Andreas
Hallo Andreas
Ich bin noch nicht dazu gekommen - ich werde mich melden.
Bis dahin noch einmal vielen Dank! Und viele Grüsse
Niclaus
 
Oben