Re: 新人求助,AHK中VBA方法中的参数不能运行问题

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Re: 新人求助,AHK中VBA方法中的参数不能运行问题

Re: Re: 新人求助,AHK中VBA方法中的参数不能运行问题

Post by windfire » 01 Oct 2018, 04:50

以前做了一个Excel的小脚本,加点稀里糊涂的糊弄过去了,这回会了,哈哈,太感谢了!

Re: 新人求助,AHK中VBA方法中的参数不能运行问题

Post by tmplinshi » 01 Oct 2018, 01:58

重复回帖了..

Re: 新人求助,AHK中VBA方法中的参数不能运行问题

Post by tmplinshi » 01 Oct 2018, 01:58

调用 PasteSpecial 或其他任何方法需要加括号,然后参数要按顺序来。
wdPasteText 这样的常量要替换成对应的值。

参数顺序、常量值这些可以通过 Google 搜索。比如搜索 word PasteSpecial -> https://docs.microsoft.com/en-us/office ... stespecial
如果碰到有些常量没有在文档中列出,则可以这样搜索: wdExtend constant
另外碰到问题时可以先搜索论坛有没有对应的解决方案。比如在 Google 中搜索 site:autohotkey.com "PasteSpecial",你会看到已经有不少相关的讨论。

Code: Select all

wdPasteText := 2
wdGoToLine := 3
wdGoToFirst := 1
wdLine := 5
wdExtend := 1

oWord := ComObjCreate("Word.Application")
oWord.Visible := true 
oDoc := oWord.Documents.Add()
oDoc.Range.PasteSpecial(,,,, wdPasteText)

oWord.Selection.GoTo(wdGoToLine, wdGoToFirst)
oWord.Selection.EndKey(wdLine, wdExtend)

新人求助,AHK中VBA方法中的参数不能运行问题

Post by windfire » 30 Sep 2018, 08:14

在AHK中不能像在VBA中正常在方法的后面空格再参数赋值。把空格改成点能运行脚本,但有错误。
下例中是把剪贴板的内容无格式粘贴到新建WORD中,并以第一行内容做文件名保存。部分代码:
objWord := ComObjCreate("Word.Application")
objWord.Visible := true
objWord.Documents.add
Click
objWord.ActiveDocument.Range.PasteSpecial.DataType:=wdPasteText (PasteSpecial方法后面加点能运行脚本,并能进入Word粘贴(只是没有按预想的无格式粘贴,还在琢磨,也请顺便指点一下),PasteSpecial方法后面如是空格则不能运行脚本,报This line does not contain a recognized action.错误)
Send ^v
Sleep,500
objWord.Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=1, Name:="" (GoTo方法后面加点能运行脚本,但是报0x80020006-未知名称 Specifically:What错误,GoTo方法后面如是空格则不能运行脚本,报This line does not contain a recognized action.错误)
objWord.Selection.EndKey.Unit:=wdLine, Extend:=wdExtend
请大神们指点一下,谢谢!

Top