看了半天Comvar()
还是没搞懂.
有两个需求:
1.我想获取VBA编辑器中, 鼠标选中的代码内容
2. 清空 "立即窗口"
求指导.
如何获取VBE中的, 鼠标选中文本?
Moderators: tmplinshi, arcticir
Re: 如何获取VBE中的, 鼠标选中文本?
第一个问题:
^c
第二个问题:
F9::
ControlFocus ,VbaWindow3,ahk_class wndclass_desked_gsk
ControlSend ,VbaWindow3,{CtrlDown}a{CtrlUp}{Delete},ahk_class wndclass_desked_gsk
return
^c
第二个问题:
F9::
ControlFocus ,VbaWindow3,ahk_class wndclass_desked_gsk
ControlSend ,VbaWindow3,{CtrlDown}a{CtrlUp}{Delete},ahk_class wndclass_desked_gsk
return
Re: 如何获取VBE中的, 鼠标选中文本?
这两个的方法都太土了.aamii wrote:第一个问题:
^c
第二个问题:
F9::
ControlFocus ,VbaWindow3,ahk_class wndclass_desked_gsk
ControlSend ,VbaWindow3,{CtrlDown}a{CtrlUp}{Delete},ahk_class wndclass_desked_gsk
return
还容易误操作.
找到一个曲线救国的.
VBcode=
(
Sub myFunction()
Worksheets(1).Range("C1").Value = 99
End Sub
)
Excel_Run("myFunction", VBcode) ; Changed: pass VBA code text to the function
return
Excel_Run(sFunction, VBcode){
;~ FilePath := C:\Users\KostasK\Desktop\Plano.xlsx
FilePath := A_ScriptDir "\Plano.xlsx" ; Changed for testing
oExcel := ComObjCreate("Excel.Application")
oExcel.Visible := true ; Changed for testing
oWorkbook := oExcel.Workbooks.Open(FilePath)
; We already have a reference to the Excel Application and Workbook objects. Don't need Excel_Get
Excel_ImportCode(VBcode, oWorkbook) ; Changed: Pass the workbook to use to Excel_ImportCode
oExcel.Run(sFunction) ; Changed
;~ oWorkbook.Save ; Changed for testing
;~ oExcel.Quit ; Changed for testing
}
Excel_ImportCode(VBcode, WorkbookObj){
if fileexist(A_ScriptDir . "\tempvbcode.txt")
FileDelete, %A_ScriptDir%\tempvbcode.txt
FileAppend, %VBcode%, %A_ScriptDir%\tempvbcode.txt
WorkbookObj.VBProject.VBComponents.Import(A_ScriptDir . "\tempvbcode.txt")
}
Re: 如何获取VBE中的, 鼠标选中文本?
Sub ClearImmediate()
Debug.Print VBA.String(200, vbNewLine)
'For a = 1 To 200
'Debug.Print ""
'Next
End Sub
oExcel.Run(oExcel.ActiveWorkbook.Name . "!ClearImmediate")
Debug.Print VBA.String(200, vbNewLine)
'For a = 1 To 200
'Debug.Print ""
'Next
End Sub
oExcel.Run(oExcel.ActiveWorkbook.Name . "!ClearImmediate")
Re: 如何获取VBE中的, 鼠标选中文本?
建议你插入代码的时候
使用
使用
Code: Select all
Example
Re: 如何获取VBE中的, 鼠标选中文本?
第二个问题是可行的,实际上,你还可以借助vba自身的sendkeysaamii wrote:第一个问题:
^c
第二个问题:
F9::
ControlFocus ,VbaWindow3,ahk_class wndclass_desked_gsk
ControlSend ,VbaWindow3,{CtrlDown}a{CtrlUp}{Delete},ahk_class wndclass_desked_gsk
return
Code: Select all
#IfWinActive Microsoft Visual Basic for Applications
F9::excel_get().Application.SendKeys( "^g ^a {BackSpace}")
#IfWinActive
Who is online
Users browsing this forum: No registered users and 52 guests