VBA: Text nach unten schieben

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Rohwedder
Posts: 7613
Joined: 04 Jun 2014, 08:33
Location: Germany

VBA: Text nach unten schieben

15 Nov 2018, 15:38

Hallo,
erster Versuch mit VBA unter Autohotkey:

Code: Select all

#IfWinActive ahk_class OpusApp
q::
Word := ComObjActive("Word.Application")
If !Word
{
	MsgBox, Word ist leer
	Return
}
ToolTip,% Word.ActiveDocument.FullName  
Sleep, 1000
ToolTip
;https://msdn.microsoft.com/de-de/vba/word-vba/articles/font-position-property-word
;der markierte Text wird um 2 Punkt nach unten verschoben.
Word.Selection.Font.Position := -2
Return
Das aktive Dokument wird erkannt, aber der selektierte Text leider nicht abgesenkt!
Muß man irgendwie noch befehlen, daß das gewünschte auch passieren soll?
(Windows 7, Word 2010, Autohotkey Admin, UAC tot.)
User avatar
LuckyJoe
Posts: 340
Joined: 02 Oct 2013, 09:52

Re: VBA: Text nach unten schieben

15 Nov 2018, 17:46

... also bei mir funktioniert dein Script einwandfrei mit Word 2003.
Herzliche Grüße aus dem Rheinland
Lucky Joe
Rohwedder
Posts: 7613
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: VBA: Text nach unten schieben

16 Nov 2018, 02:21

Hallo,
bei mir heute zunächst auch (gestern nie!).
Dann häufte sich der Fehler:
Error: 0x800401E3 - Vorgang nicht verfügbar.
---> 003: Word := ComObjActive("Word.Application")

und nachdem ich dies mit Try versehen hatte, dann:
Error: 0x800706BA - Der RPC-Server ist nicht verfügbar.
Specifically: Selection
---> 017: Word.Selection.Font.Position := -2

Also noch ein Try und es läuft jetzt halbwegs.
Irgendetwas am Skript ist faul, denn so unzuverlässig kann doch VBA nicht sein!
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: VBA: Text nach unten schieben

16 Nov 2018, 04:29

Moin,

auch wenn das kleinlich klingen mag, mit VB(A) hat das wenig zu tun. Hier geht es um die in AHK eingebaute Unterstützung von COM Objekten. Die VB(A) Syntax liefert aber gute Hinweise darauf, wie man die Objekte in AHK ansprechen kann.
User avatar
LuckyJoe
Posts: 340
Joined: 02 Oct 2013, 09:52

Re: VBA: Text nach unten schieben

16 Nov 2018, 04:47

Hi,

vielleicht helfen folgende Ansätze: ComObjError(), VarSetCapacity()...
Ggf. muss man den Speicher wieder freigeben (word := "")?

Viel Erfolg!
Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: VBA: Text nach unten schieben

16 Nov 2018, 05:57

Wenn so ein Fehler auftaucht bedeutet das, dass diese Aktion fehlgeschlagen ist.
Bei dir ist das ganze wie eine lange Reihe Dominosteine aufgebaut und da der erste nicht fällt klappen die anderen auch nicht um.

Was fehlschlägt ist das erhalten des aktiven Word Programms. Das kann daher kommen, dass Word nun als Admin ausgeführt wird, oder einfach schlichtweg nicht läuft.
Recommends AHK Studio
Rohwedder
Posts: 7613
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: VBA: Text nach unten schieben

17 Nov 2018, 07:22

Hallo,
vielen Dank für die Hilfen.
Dies hier ist letztendlich daraus geworden:

Code: Select all

#IfWinActive ahk_class OpusApp ;Word
+WheelUp:: ;Markierung absenken/anheben
+WheelDown::
Try
	Word := ComObjActive("Word.Application")
IF !Word
	Return
FontPosition := Word.Selection.Font.Position
IF FontPosition > 100000 ;Markierung enthält unterschiedliche FontPositionen
	FontPosition := 0, FoPoDel := 0
Else IF A_ThisHotkey = +WheelUp
	FoPoDel := !FoPoDel Or Abs(FontPosition) < 5 ? 1 : Max(1,++FoPoDel)
Else If A_ThisHotkey = +WheelDown
	FoPoDel := !FoPoDel Or Abs(FontPosition) < 5 ? -1 : Min(-1,--FoPoDel)
Else
	Return
ToolTip,% Word.Selection.Font.Position := FontPosition += FoPoDel
SetTimer, ToolTipWeg, -1000
Return
ToolTipWeg:
FoPoDel := 0, Word := ""
ToolTip
Return
Wenn Text mit Grafik in einer Textzeile stehen, kann ich sie jetzt bequem vertikal justieren.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: gero and 24 guests