C#如何通过API获取Excel窗体中的Frame控件

内部清一色类名都是F3Serverxxxxxxxx...标题全空求如何获取窗体UserForm1中Caption属性含"查询"的Frame控件句柄,还有如何获取它的子控件... 内部清一色类名都是 F3 Server xxxxxxxx ...标题全空
求如何获取窗体UserForm1中Caption属性含"查询"的Frame控件句柄,还有如何获取它的子控件句柄
是Windowless控件...
不允许修改VBA工程,另外做个窗体要求跟随VBA的窗体一起移动,并且能够向它的Button发送按键消息,以及获取Label的内容
展开
 我来答
TaniX
2014-01-10 · TA获得超过1415个赞
知道小有建树答主
回答量:70
采纳率:0%
帮助的人:47万
展开全部

只给你个思路哈,因为不知道你需要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自动定位单击或者游戏歪挂之类的办法……
顶级坏蛋7899
2014-01-10 · 贡献了超过142个回答
知道答主
回答量:142
采纳率:0%
帮助的人:43.1万
展开全部
this.Caption
追问
这边是想要在C#里获取Excel的一个窗体,然后激活其中的Frame并点击Frame内的Button...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
世界之山ccc
2014-01-10
知道答主
回答量:93
采纳率:0%
帮助的人:26.6万
展开全部
围观,这个问题表深奥,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式