2017-09-12 3 views
-2
#Include Com.ahk   ; COM 
     RunMSWordMacro(correct) 
     { 
      COM_Init() 
      Word := COM_GetActiveObject("Word.Application") 
      COM_Invoke(Word, "Run", "!"correct) 
      COM_Release(Word) 
      COM_Term() 
     } 

     ; the hotkey is 1 
    1::RunMSWordMacro("correct") 

Pourquoi ce code ne fonctionne pas? regardez l'image "message", et aidez-moi s'il vous plaît, je suis un nouvel utilisateur dans autohotkey.autohotkey: Exécuter la macro vba avec le script ahk

Quand je presse hotkey, il m'a donné ce message:

https://i.stack.imgur.com/ebtDH.png

ceci est mon code vba:

Merci David Metcalfe, qui est mon code vba:

Sub correct() 
' 
' correct Macro 
' 
    Selection.Find.ClearFormatting 
    Selection.Find.Replacement.ClearFormatting 
    With Selection.Find 
     .Text = "p " 
     .Forward = True 
     .Wrap = wdFindContinue 
    End With 
    Selection.Find.Execute 
    Selection.TypeText Text:="o " 
End Sub 
+1

Vous devriez poser une question. Publier du code sans nous dire ce qui ne va pas et ce que vous essayez de faire est presque inutile. [Modifier] votre question et donnez-nous quelques détails. –

+0

Je modifie ma question et ajouter quelques détails, Ceci est mon meilleur, s'il vous plaît aider – asad41163

+0

s'il vous plaît tout corps m'aider. – asad41163

Répondre

0

l'aide d'ici: [https://autohotkey.com/boards/viewtopic.php?f=5&t=37197&e=1&view=unread#unread][1]

1:: RunMSWordMacro("correct") 

    RunMSWordMacro(name) { 
     GetWord().Run(name) 
    } 

    GetWord() { 
     if !hwnd := WinActive("ahk_class OpusApp") 
      hwnd := WinExist("ahk_class OpusApp") 
     ControlGet, ControlHwnd, Hwnd,, _WwG1, ahk_id %hwnd% 
     Return AccObjectFromWindow(ControlHwnd, -16).Application 
    } 

    AccObjectFromWindow(hWnd, idObject = 0) 
    { 
     static IID_IDispatch := "{00020400-0000-0000-C000-000000000046}" 
      , IID_IAccessible := "{618736e0-3c3d-11cf-810c-00aa00389b71}" 
      , OBJID_NATIVEOM := 0xFFFFFFF0, VT_DISPATCH := 9, h := DllCall("LoadLibrary", Str, "oleacc", Ptr) 

     VarSetCapacity(IID, 16), idObject &= 0xFFFFFFFF 
     DllCall("ole32\CLSIDFromString", Str, idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, Ptr, &IID) 
     if DllCall("oleacc\AccessibleObjectFromWindow", Ptr, hWnd, UInt, idObject, Ptr, &IID, PtrP, pAcc) = 0 
      Return ComObjEnwrap(VT_DISPATCH, pAcc, 1) 
    } 
0

Il serait utile si vous avez expliqué quel est l'objectif final de votre code. Basé sur le VBA que vous avez fourni, il semble que vous essayez simplement d'exécuter Microsoft Word, auquel cas vous pouvez utiliser AutoHotkey entièrement. La syntaxe de Run est assez simple à utiliser.

Run, C:\Path\to\Microsoft Word.exe 
+1

Merci David Metcalfe, – asad41163

+0

@ asad41163 De rien. En outre, si cela a résolu votre problème, acceptez-le comme réponse pour l'éliminer du groupe de questions non répondues. :) –

+0

Je ne veux pas simplement exécuter Microsoft Word, j'ai envoyé un code vba et je veux l'exécuter en utilisant AHK, s'il vous plaît aider. – asad41163