我试图在一些具有一些宏的Excel工作表上自动化数据填充.现在excel受到保护,我无法获得密钥.现在我能够运行宏,但是当我尝试传递参数时,我得到的参数不匹配.
如果我只是运行带有名称的宏,我得到inputbox一个额外的参数作为输入,并自动生成列的一些值.我必须手动输入此值到inputbox现在.有没有什么方法可以自动化该过程,即捕获vb.net脚本中的宏抛出的输入框并从那里输入值?即,我想运行宏,并在我得到弹出窗口要求我输入一些值后,使用vb.net代码输入该弹出窗口的值.
这就是我现在所拥有的
Public Class Form1
Dim excelApp As New Excel.Application
Dim excelWorkbook As Excel.Workbook
Dim excelWorkSheet As Excel.Worksheet
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
excelWorkbook = excelApp.Workbooks.Open("D:/excelSheets/plan_management_data_templates_network.xls")
excelApp.Visible = True
excelWorkSheet = excelWorkbook.Sheets("Networks")
With excelWorkSheet
.Range("B7").Value = "AR"
End With
excelApp.Run("createNetworks")
// now here I would like to enter the value into the createNetworks Popup box
excelApp.Quit()
releaseObject(excelApp)
releaseObject(excelWorkbook)
End Sub
Run Code Online (Sandbox Code Playgroud)
宏定义
createNetworks()
//does so basic comparisons on existing …Run Code Online (Sandbox Code Playgroud) 虽然熟悉VBA,但我对WinApi调用很新.我想要做的是挂钩到VBE窗口的子类SysTreeView32(Project Explorer TreeView).我想通过修改注册表项来扩展/折叠树视图元素(或者发送鼠标单击(mouse_event),尽管我更喜欢第一个选项).
我可以使用以下代码找到Excel主窗口:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub Find_Window()
Dim hWndExcel As Long
hWndExcel = FindWindow("XLMAIN", Application.Caption)
MsgBox hWndExcel
End Sub
Run Code Online (Sandbox Code Playgroud)
在Window Detective的帮助下,我可以访问子类的名称,属性等.
但我无法解决如何访问/激活(甚至返回HWID)SysTreeView32子类以折叠/展开元素(文件夹).我不知道如何迭代元素,但我会在之后研究它.这里的问题是访问SysTreeView32课程.我怎样才能实现它?
当我尝试MSGBOX这
FindWindow("wndclass_desked_gsk", Application.Caption)
还是
FindWindow("SysTreeView32", Application.Caption)
一个0返回所以我明明做错了什么:/
谢谢你的时间.