C#如何通过API获取Excel窗体中的Frame控件
内部清一色类名都是F3Serverxxxxxxxx...标题全空求如何获取窗体UserForm1中Caption属性含"查询"的Frame控件句柄,还有如何获取它的子控件...
内部清一色类名都是 F3 Server xxxxxxxx ...标题全空
求如何获取窗体UserForm1中Caption属性含"查询"的Frame控件句柄,还有如何获取它的子控件句柄
是Windowless控件...
不允许修改VBA工程,另外做个窗体要求跟随VBA的窗体一起移动,并且能够向它的Button发送按键消息,以及获取Label的内容 展开
求如何获取窗体UserForm1中Caption属性含"查询"的Frame控件句柄,还有如何获取它的子控件句柄
是Windowless控件...
不允许修改VBA工程,另外做个窗体要求跟随VBA的窗体一起移动,并且能够向它的Button发送按键消息,以及获取Label的内容 展开
3个回答
展开全部
只给你个思路哈,因为不知道你需要API句柄干啥,我给你个不需要API的~
用这几个命名空间操纵
using VBE = Microsoft.Vbe.Interop;
using Forms = Microsoft.Vbe.Interop.Forms;
using Excel = Microsoft.Office.Interop.Excel;
可以取得VBA工程对象
VBE.VBProject objVBProject = objApplication.VBE.ActiveVBProject;
然后…可以添加一个UserForm
VBE.VBComponent objUserFormComponent = objVBProject.VBComponents.Add(VBE.vbext_ComponentType.vbext_ct_MSForm);
可以在UserForm里添加控件
var objFormButton = objUserFormComponent.Designer.Controls.Add("Forms.CommandButton.1");
然后,还可以
objFormButton.Caption = "Try to Click Me";
objFormButton.Name = "frmbtn1"; //更改控件属性
strModuleString = "Private Sub frmbtn1_Click()\nMsgbox \"Hello "
+"World!\"\nfrmbtn1.Caption=\"This is a test!\"\nEnd Sub";
objUserFormComponent.CodeModule.AddFromString(strModuleString); //添加VBA代码
还有啥?如果要找到某个控件,在那些集合中遍历查找一下应该可以找到吧……
更多追问追答
追问
目前是不允许修改Excel的VBA工程,目标是固定一个区域用于显示特定的信息,跟随VBA的窗体一起移动,并且能够向其发送点击消息和获取文本
追答
你是怎么访问和打开这个Excel文件的呀?Microsoft.Office.Interop.Excel?还是什么别的方法?
只有是c#直接访问它才好操控,不然就只有想其他WinAPI的办法了,例如AHK自动定位单击或者游戏歪挂之类的办法……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询