ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: VBA万岁

[求助] VSTO入门问题集

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-11-15 15:33 | 显示全部楼层
VBA万岁 发表于 2015-11-15 13:22
出错主要在于24、27两句,分别为:24(无法将类型“System.Data.DataTable”隐式转换为“Microsoft.Offic ...

强制转换时
新类型 x=(新类型) 旧类型;
或者以下
新类型 x= 旧类型 as 新类型;

但,这个问题,你不应该是用强制转换,因为,强制转换,不一定可以转换成功,上面说的第二种方式转换,如果失败,变量就为null,第一种方式的转换,如果失败,就会直接异常.
你这里,应该是用excel里面的dataTable类型,而不是用ado.net的dataTable.

我电脑没有安装vsto,所以没有方法帮你调试,但你只要按照正确的类型来调用,一般是没有什么问题的

TA的精华主题

TA的得分主题

发表于 2015-11-15 15:40 | 显示全部楼层
VBA万岁 发表于 2015-11-15 13:22
出错主要在于24、27两句,分别为:24(无法将类型“System.Data.DataTable”隐式转换为“Microsoft.Offic ...

现在才看到图片.第一句应该是这样
在excel的命名空间下,也有一个DataTable的类,你上面using没有system.data吗?
你可以试试,用限定名称来写类型
System.Data.DataTable table=oledbcConnection^^^^^^^^^;

第二个错误就是因为第一个错引起

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-16 08:40 | 显示全部楼层
excelhomesnake 发表于 2015-11-15 15:27
上面代码的comboBox1,应该是WindowsForm或wpf的控件,不是你楼顶贴中vsto的Ribbon控件.因此,是不一样的.
...

原来如此,多谢!
另,dropdownitem的对象是个什么对象?是控件吗?若不是,如果新建——new的语句怎样写,属性如何设置?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-16 09:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
excelhomesnake 发表于 2015-11-15 15:40
现在才看到图片.第一句应该是这样
在excel的命名空间下,也有一个DataTable的类,你上面using没有system.d ...

有 using system.data。
有空再试试System.Data.DataTable table=oledbcConnection^^^^^^^^^;

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-16 12:16 | 显示全部楼层
VBA万岁 发表于 2015-11-16 08:40
原来如此,多谢!
另,dropdownitem的对象是个什么对象?是控件吗?若不是,如果新建——new的语句怎样 ...

RibbonDropDownItem 接口
c# ribbon /bombobox问题
c# dropDown1.Items.Add();

TA的精华主题

TA的得分主题

发表于 2015-11-16 13:01 | 显示全部楼层
VBA万岁 发表于 2015-11-16 08:40
原来如此,多谢!
另,dropdownitem的对象是个什么对象?是控件吗?若不是,如果新建——new的语句怎样 ...

应该是一个包装了下拉框项的类,跟其他类的实例化一样的
类型 xxx=new 类型();
xxx.一堆属性

大概有value,text,name之类的属性,你设置好,把这个对象给下拉框控件的add方法

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-16 13:40 | 显示全部楼层
VBA万岁 发表于 2015-11-16 09:03
有 using system.data。
有空再试试System.Data.DataTable table=oledbcConnection^^^^^^^^^;

新的问题:
1、System.Collections.Generic.Icollection<Microsoft.Office.Tools.Ribbon.RibbonDropdownItem>.Add(Microsoft.Office.Tools.Ribbon.RibbonDropdownItem)"最匹配的重载具有一些无效参数
2、无法从“string”转换为“Microsoft.Office.Tools.Ribbon.RibbonDropdownItem”
如下:

3.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-16 15:17 | 显示全部楼层
本帖最后由 VBA万岁 于 2015-11-16 15:27 编辑
excelhomesnake 发表于 2015-11-16 13:01
应该是一个包装了下拉框项的类,跟其他类的实例化一样的
类型 xxx=new 类型();
xxx.一堆属性


是要把“value,text,name”之类的所有属性设置好后,才能把这个对象add给下拉框控件吗?
15楼第3个链接的方法可行吗(我这里一时无法测试,故有此问)?如下:
ListItem item = new ListItem();
            item.Text = "XXXXXXX";
            item.Value = "value";
            dropDown1.Items. Add(item);

TA的精华主题

TA的得分主题

发表于 2015-11-16 17:57 | 显示全部楼层
VBA万岁 发表于 2015-11-16 15:17
是要把“value,text,name”之类的所有属性设置好后,才能把这个对象add给下拉框控件吗?
15楼第3个链 ...

在运行时,可以使用 RibbonFactory 对象的 CreateRibbonDropDownItem 方法创建 RibbonDropDownItem。
有两种方法可访问 RibbonFactory 对象:
使用功能区类的 Factory 属性。请通过功能区类中的代码使用此方法。
使用 Globals.Factory.GetRibbonFactory 方法。请通过功能区类之外的代码使用此方法。

以上是msdn的说明,因为RibbonDropDownItem是一个接口类型,不能直接使用.你按照上面的说法,通过RibbonFactory 来创建一个RibbonDropDownItem的实例,然后设置他的Label属性

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-11-16 18:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
代码大概是这样子吧

RibbonDropDownItem dropItem=Globals.Factory.GetRibbonFactory(@1);

dropItem.Label="myTableName";

那个控件.Add(dropItem);



@1:这里应该要传入一个enum之类的参数吧,或者是实现了该接口的类的实例,如果是enum类型,直接ctrl J,可以直接在列表出来该类型,选中后,输入点号,直接就可以选一个.

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-2 02:33 , Processed in 0.049023 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表