如何:Autohotkey Com - Excel PasteSpecial()

问题描述:

当前尝试使用PasteSpecial,但有一些类型的语法问题。
要么COM错误:“无法获得区域类的粘贴特殊属性。”,或者它不会从剪贴板粘贴。如何:Autohotkey Com - Excel PasteSpecial()

这是我到目前为止已经试过:

Data := Clipboard 

Xl := ComObjCreate("Excel.Application") 
Xl := ComObjActive("Excel.Application") 

filepath = %A_WorkingDir%\new.xlsx 
Xl.Workbooks.Open(filepath) 
Xl.Visible := True 
Clipboard := Data 

; tried these get COM error mentioned above ; 

Xl.Selection.PasteSpecial(-4163) 
Xl.Range("A:D").PasteSpecial(-4163) 
Xl.Selection.Range("A:D").PasteSpecial(-4163) 
Xl.Range("A:D").Selection.PasteSpecial(-4163) 
Xl.Selection.PasteSpecial(-4163).Range("A:D") 
Xl.Selection.Range("A:D") := XL.Selection.PasteSpecial(-4163) 
Xl.ActiveSheet.Selection.PasteSpecial(-4163) 

; tried these no COM error mentioned above but does not paste ; 

ActiveSheet.PasteSpecial(-4163) 
Selection.PasteSpecial(-4163) 
ActiveSheet.Selection.PasteSpecial(-4163) 
Selection.ActiveSheet.PasteSpecial(-4163) 
ActiveSheet.Range("A:D").PasteSpecial(-4163) 
ActiveSheet.PasteSpecial(-4163).Range("A:D") 
ActiveSheet.Selection.PasteSpecial(-4163).Range("A:D") 
ActiveSheet.Selection.Range("A:D").PasteSpecial(-4163) 
ActiveSheet.Range("A:D").Selection.PasteSpecial(-4163) 

谢谢你的帮助。

+1

从AHK论坛上有人向我展示了:'Xl.ActiveSheet.Range(“A:D”).PasteSpecial()'工作,尽管-4163被描述为粘贴模式的值。另一方面,这也会粘贴格式,所以人们需要设法解决这个问题,用记事本轻松完成。我会留下这个问题,希望有人能够明白如何去做价值观。 –

在我看来,这可以用更简单的方式完成。

您可以通过按Ctrl + Alt键+v在Excel中打开选择性粘贴对话框。从那里,你只需按corresponding letter为你想要的任何设置,然后输入,并剪贴板的内容将粘贴在所需的格式。

继线程,这里有一个例子:

pasteSpecial(mode){ 
replace := {"All":"a","all":"a","Formulas":"f","formulas":"f","Values":"v","values":"v","Formats":"t","formats":"t","Comments":"c","comments":"c","Validation":"n","validation":"n"} 
For start, end in replace { 
    StringReplace, mode, mode, %start%, %end%, All 
} 
SendInput, {Ctrl down}{Alt down}{v down}{Ctrl up}{Alt up}{v up} 
WinWait, Paste Special 
WinGetTitle, Title, A 
if (RegExMatch(Title, "Paste Special")) 
{ 
SendInput, %mode%{Enter} 
}} 

F3:: 
pasteSpecial("Values") 
return 

在这里,你就是我的会解析字符串输入,并更换大/小写版本使用键盘快捷键的功能。这将允许更多的控制,而不仅仅是为粘贴值编码。