如何: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)
谢谢你的帮助。
答
在我看来,这可以用更简单的方式完成。
您可以通过按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
在这里,你就是我的会解析字符串输入,并更换大/小写版本使用键盘快捷键的功能。这将允许更多的控制,而不仅仅是为粘贴值编码。
从AHK论坛上有人向我展示了:'Xl.ActiveSheet.Range(“A:D”).PasteSpecial()'工作,尽管-4163被描述为粘贴模式的值。另一方面,这也会粘贴格式,所以人们需要设法解决这个问题,用记事本轻松完成。我会留下这个问题,希望有人能够明白如何去做价值观。 –