![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
EXCEL VSTO
laoyebin
我自横刀向天笑无人知是荔枝来
展开
-
列出所有最近使用的工作簿
private void button1_Click(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); for (int i = 1; i < this.Application.RecentFiles.Count; i++) { sb.Append(this.原创 2010-02-07 20:32:00 · 570 阅读 · 0 评论 -
画四条直线然后组合成矩形
<br />private void button1_Click(object sender, EventArgs e){ Excel.Shape lineA = Globals.Sheet1.Shapes.AddLine(25, 140, 495, 140); Excel.Shape lineB = Globals.Sheet1.Shapes.AddLine(495, 140, 495, 305); Excel.Shape lineC = Globals.Sheet1.S原创 2010-06-08 22:09:00 · 968 阅读 · 0 评论 -
获取日历控件的选取值
VBA里直接用“Calendar.Value”就可以获取日历控件的值了,但VSTO里竟然没有这个属性。找了半天,原来要这样搞才行:原创 2010-05-31 23:59:00 · 3951 阅读 · 0 评论 -
获取Excel中的自定义序列
private void button1_Click(object sender, EventArgs e){ for (int i = 1; i <= Application.CustomListCount; i++) { object obj = Application.GetCustomListContents(i); Arr原创 2010-05-06 21:10:00 · 845 阅读 · 0 评论 -
VSTO里转置C#数组
大家都知道,C#里没有直接的方法能转置一个数组,所以一般都用循环来完成。为此我上次专门在CSDN上发了个贴,询问VSTO里用C#有没有办法可以不用循环来转置数组,但没得到结果,为此我还抱怨了微软好久,C#的功能竟然还不及VBA。今天,突然闪过一个念头,VBA里可以调用EXCEL的工作表函数,那VSTO里是否也可以呢?试了一下,原来真可以,郁闷了,以前转了那么多弯路。测试代码如下:pr原创 2010-04-23 20:47:00 · 1383 阅读 · 0 评论 -
为什么有些Office对象的事件无法使用
今天碰到了个问题,发现无法使用某些对象事件,+=后双TAB出不来。四处找原因,GOOGLE、MSDN上翻了许久,终于找到了原因和解决方法。原因:写了一个同名的方法,而VSTO处理规则应该是方法>事件,所以有了同名的方法后事件就无法使用了。如已经写了下面的方法:void ThisWorkbook_ActivateEvent(){ MessageBox.Show("b");}原创 2010-04-14 23:52:00 · 1128 阅读 · 0 评论 -
一个有趣的C#正则替换问题
9.1(2) ------ 9.119(3).5(1) ----- 999.589(2).7 ------ 899.7即把括号替换成括号前一数字的N次原帖见http://topic.csdn.net/u/20100317/19/e25694b8-ff80-427a-910b-04a666ce6cbc.html static void Main(string[] args){原创 2010-03-17 23:28:00 · 724 阅读 · 0 评论 -
VSTO在EXCEL添加VBA模块代码
private void ThisWorkbook_Startup(object sender, System.EventArgs e){ string sCode = "Sub VBAMacro()/r/n" + "MsgBox /"Test/"/r/n" + "End Sub"; VBComponent oModule; oModule = Globals.T原创 2010-03-16 13:58:00 · 2130 阅读 · 0 评论 -
VSTO中捕捉窗口缩放的事件
private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.WindowResize += new Microsoft.Office.Interop.Excel.WorkbookEvents_WindowResizeEventHandler(ThisWor原创 2010-03-15 16:25:00 · 1411 阅读 · 0 评论 -
VSTO C#数组填充EXCEL单元格
VS2005版的C#没有提供和VB.NET一样的RESIZE方法,所以经常看到很多用C#的同学在数组填充单元格的时候是通过定义一个Excel.Range再赋值Value2的方法来做的,其实VS2008中提供了一个get_Resize方法,无需那么麻烦了。 private void button1_Click(object sender, EventArgs e){ int[,]原创 2010-03-10 23:56:00 · 2681 阅读 · 0 评论 -
123456789四则运算
代码说明:在123456789或987654321中插入+-*/四则符号来算出一个固定的值。asc为true时是123456789,反之为987654321。123456789算100,C#下时间为15秒,VBA下为56秒,快了3/4。版权说明:本文来自狼版http://blog.csdn.net/northwolves/archive/2009/11/20/4841068.aspx一文,原创 2010-03-05 13:48:00 · 1547 阅读 · 0 评论 -
VSTO 隐藏EXCEL2007的菜单栏
private void button1_Click(object sender, EventArgs e){ Application.ExecuteExcel4Macro("show.toolbar(/"ribbon/",false)");}private void button2_Click(object sender, EventArgs e){原创 2010-02-23 16:44:00 · 2471 阅读 · 0 评论 -
列出指定文件夹中的子文件夹和文件
VBA列出文件夹中所有的子文件夹 Sub ShowFolderList() Dim fso As Object, oFolder As Object Dim oFolderArray As Object, f As Object Dim k& Set fso = CreateObject("scripting.filesystemobject")原创 2010-02-21 13:39:00 · 2699 阅读 · 0 评论 -
获取所选取表名和区域的名称
private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.SheetSelectionChange += new Microsoft.Office.Interop.Excel.WorkbookEvents_SheetSelectionChange原创 2010-02-20 13:58:00 · 1295 阅读 · 0 评论 -
NewSheet事件的疑惑与郁闷
C# 的代码using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Windows.Forms;using System.Xml.Linq;using Microsoft.VisualStudio.原创 2010-02-18 21:22:00 · 1148 阅读 · 0 评论 -
取当前用户登录域和登录名
private void button1_Click(object sender, EventArgs e) { MessageBox.Show(System.Security.Principal.WindowsIdentity.GetCurrent().Name); } C#里只需要这么一句话,而VBA环境里试了好几个方法,都只能取到本地机原创 2010-02-22 21:54:00 · 1897 阅读 · 1 评论 -
禁止工作表右击菜单
private void InternalStartup() { this.ActivateEvent += new Microsoft.Office.Interop.Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_ActivateEvent); th原创 2010-02-19 13:44:00 · 998 阅读 · 0 评论 -
列出所有工作表的名称
在sheet1里插入button1,双击输入click事件 private void button1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); foreach (Excel.Workshee原创 2010-02-07 20:25:00 · 911 阅读 · 0 评论 -
VSTO/Excel:快速找出某一列中与指定单元格不同的数据
<br />private void button1_Click(object sender, EventArgs e){ Excel.Range rng = null; rng = ((Excel.Range)this.Columns[1]).ColumnDifferences(Range["a2"]); rng.Select();} <br /> <br />这个方法其实就是调用了F5定位里的columndifferences,但两者有一点不同的地方:定位里的C原创 2010-08-29 21:47:00 · 1783 阅读 · 0 评论