ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

谈谈vs2010 vsto C#入门

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-9 08:02 | 显示全部楼层
lipton 发表于 2012-11-8 23:50
和我的一样要在别的目录安装要重新编译一次。

从控制面板中删除后再重新安装就可以啦

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-9 08:18 | 显示全部楼层
wqfzqgk 发表于 2012-11-9 08:02
从控制面板中删除后再重新安装就可以啦

谢谢提醒。昨天出错的原因,是因为漏了安装这一步,直接点了Excel文件,

TA的精华主题

TA的得分主题

发表于 2012-11-9 08:56 | 显示全部楼层
文档型的我觉得要是自己用还可以,要是形成插件的,还得用程序型

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-9 19:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
继续改进演练项目
改进了在Sheet1_Startup过程里的细节操作,在这个过程里除非必须的工作表初始化操作外尽量不加过程细节代码。
增加了一个简单的字典操作,字典在Excel数据分析里起很大作用。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Text;
  5. using System.Xml;
  6. using System.Windows.Forms;
  7. using Microsoft.Office.Tools.Excel;
  8. using Microsoft.VisualStudio.Tools.Applications.Runtime;
  9. using Excel = Microsoft.Office.Interop.Excel;
  10. using Office = Microsoft.Office.Core;
  11. //System.Collections.Generic;使用字典
  12. namespace ExcelWorkbook4
  13. {
  14.     public partial class Sheet1
  15.     {
  16.         //VBA代码: Dim sh As Worksheet
  17.         Excel.Worksheet sh;
  18.         //VBA代码:Set rng1 = Range("c1")
  19.         Excel.Range rng1 = null;
  20.         
  21.         private void Sheet1_Startup(object sender, System.EventArgs e)
  22.         {
  23.             //Sheet1_Startup当工作表启动前需要完成的操作在这里执行
  24.             //这里的位置应该减少细节操作,用子过程完成
  25.             
  26.             //调用子过程1,工作表单元格的赋值操作,列宽调整
  27.             this.Demo1();
  28.             
  29.             //调用数组操作子过程,数组向工作表Range范围赋值
  30.             this.DemoArray();

  31.             //字典的简单操作,字典在统计和分析数据起很大的作用
  32.             this.DemoDic();

  33.         }

  34.         private void Sheet1_Shutdown(object sender, System.EventArgs e)
  35.         {
  36.            //工作表关闭前需要执行的操作      
  37.         }

  38.         private void Demo1()
  39.         {
  40.             //VBA代码:Dim rng1 As Range   
  41.             //VBA代码:Set sh = ActiveSheet
  42.             sh = this.Application.ActiveSheet;
  43.             //VBA代码:sh.Cells(1, 5) = Now
  44.             sh.Cells[1 , 5].value = System.DateTime.Now;
  45.             //VBA代码:sh.Cells(1, 5).Columns.AutoFit,自动调整列宽
  46.             sh.Cells[1 , 5].EntireColumn.AutoFit();
  47.             //自定义函数或子过程,这里示意一个返回F列最大使用行值
  48.         }

  49.         private void DemoArray()
  50.         {
  51.             //子过程代码,数组定义,数组操赋值,把数组赋值给工作表Range
  52.             Excel.Range rng=null;
  53.             //VBA代码: Dim theArray(0 to 5,0 to 10)
  54.             int[,] theArray = new int[5, 10];
  55.             rng = Application.get_Range("b1", missing);
  56.             //Rank方法,返回数组的维度,这个VBA没有
  57.             rng.Value2= "数组维度 " + theArray.Rank;
  58.             //VBA代码:Dim m As Long
  59.             int m = 0;
  60.             //两个循环 For i = 0 to 5
  61.             //         For j = 0 to 10
  62.             //              m=m + 1
  63.             //              theArray(i,j) =m   
  64.             for (int i = 0; i <= theArray.GetUpperBound(0); i++)  
  65.                 for (int j = 0; j <= theArray.GetUpperBound(1); j++)
  66.                 {
  67.                     m++;
  68.                     theArray[i,j] = m;
  69.                 }
  70.             //VBA代码:Set rng = Range("f1:o5")
  71.             rng = Application.get_Range("f1", "o5");
  72.             //VBA代码:rng.Value = theArray    赋值给工作表Range
  73.             rng.Value2 = theArray;
  74.             int iRow;
  75.             rng = Application.get_Range("f1", missing);
  76.             //VBA代码:iRow = sh.Range("f1").End(xlDown).Row 取F列最大使用行
  77.             iRow = rng.get_End(Excel.XlDirection.xlDown).Row;
  78.             rng1 = Application.get_Range("c1", missing);
  79.             //VBA代码:rng1.Value2 = "F列最大使用 " + lRow 赋值给引用对象。
  80.             rng1.Value2 = "F列最大使用 " + iRow;
  81.         }
  82.         
  83.         private void DemoDic()
  84.         {
  85.             Dictionary<string, string> dic =
  86.             new Dictionary<string, string>();
  87.             //向字典添加值
  88.             dic.Add("aa", "a1");
  89.             dic.Add("bb", "b1");
  90.             dic.Add("cc", "c1");
  91.             //调用字典元素
  92.             MessageBox.Show(dic["bb"]);
  93.             //检测是否存在ee
  94.             if (!dic.ContainsKey("ee"))
  95.             {
  96.                 dic.Add("ee", "e1");
  97.             }
  98.           }

  99.            
  100.         #region VSTO 设计器生成的代码

  101.         /// <summary>
  102.         /// 设计器支持所需的方法 - 不要
  103.         /// 使用代码编辑器修改此方法的内容。
  104.         /// </summary>
  105.         private void InternalStartup()
  106.         {
  107.             this.Startup += new System.EventHandler(Sheet1_Startup);
  108.             this.Shutdown += new System.EventHandler(Sheet1_Shutdown);
  109.         }

  110.         #endregion

  111. }
  112. }
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-9 19:41 | 显示全部楼层
修改代码后点击项目-ExcelWorkBook4属性,选择发布修改版本号增加1
版本号1.0.0.4
点击发布后如果原有程序没有卸载,点击安装Setup.exe会升级到新版本。
发布属性.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-9 19:44 | 显示全部楼层
修改后的 演练源代码
代码测试通过
编译环境
win7 64 + office2010 64 + vs2010

ExcelWorkbook4.rar

431.43 KB, 下载次数: 84

TA的精华主题

TA的得分主题

发表于 2012-11-9 20:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我以前也试用vsto  有visual assist 编写代码快多了 不过做完了发现 文件变多了  除了一个excel还有3个文件  感觉没有vba方便 不会产生多余的文件

TA的精华主题

TA的得分主题

发表于 2012-11-9 20:40 | 显示全部楼层
我只能表示仰慕各位。没有精力研究啦。也没各位这么深厚的内功。

TA的精华主题

TA的得分主题

发表于 2012-11-10 08:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-11-10 12:14 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 18:47 , Processed in 0.038871 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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