04 2010 档案
摘要:昨天一个同事问我,怎么在VSTO的控件上运行工作簿中的VBA代码。这个很简单,VSTO提供了一个Run方法,可以直接运行Marco,就和你在VBA的一个过程里调用另一个过程一样。VSTO里的代码:VBA代码:很简单吧。注意:我现在用的是VS2010,所以Run方法后面的可选参数可以省略。如果你用的还是VS2008,你还是得一个个的把”missing”写上。
阅读全文
摘要:大家都知道,C#里没有直接的方法能转置一个数组,所以一般都用循环来完成。为此我上次专门在CSDN上发了个贴,询问VSTO里用C#有没有办法可以不用循环来转置数组,但没得到结果,为此我还抱怨了微软好久,C#的功能竟然还不及VBA。今天,突然闪过一个念头,VBA里可以调用EXCEL的工作表函数,那VSTO里是否也可以呢?试了一下,原来真可以,郁闷了,以前转了那么多弯路。测试代码如下:private v...
阅读全文
摘要:以前,连接文本用的是"CONCATENATE"函数或者“&”,不过在有许多单元格时候一个个点很麻烦,所以一般都我是自编一个VBA循环来连接。前些天,看到论坛上某人发现了一个函数的新用法,“PHONETIC”函数可以快速的连接,只需=PHONETIC(A1:C10)就可连接这个区域的所有文本数据,极大的省略了繁琐的步骤。不过可惜的是,这个函数不...
阅读全文
摘要:今天碰到了个问题,发现无法使用某些对象事件,+=后双TAB出不来。四处找原因,GOOGLE、MSDN上翻了许久,终于找到了原因和解决方法。原因:写了一个同名的方法,而VSTO处理规则应该是方法>事件,所以有了同名的方法后事件就无法使用了。如已经写了下面的方法:如果再写Globals.ThisWorkbook.ActivateEvent+=,双TAB后会报以下提示:此类中已存在处理程序&rdq...
阅读全文
摘要:为了测试代码的通用性,我装了2003和2007的双Office,但今天却碰到了个问题,在VS2008下开发了一个EXCEL2003加载宏,保存后再次打开后会弹出转换向导。不当心点了个"完成",结果就郁闷了,只能重写。MS的VSTO论坛上查了一下,还真找到了解决方法,原来只要把工具>选项>Office工具>项目升级里的“始终升级到已安装版本Office”取消...
阅读全文
摘要:今天某论坛上看到有人问VBA里的Msgbox在C#里怎么没有了。刚学C#那会,我也迷惑了一阵,后来MSDN上一查,原来Msgbox在C#里改名字了:Messagebox.Show 。小知识,希望对从VBA到C#的初学者有用。
阅读全文