实例1:处理NewWorkbook和WorkSheet事件的控制台程序 书本第70页

程序清单 4.1 处理NewWorkbook和WorkSheet事件的控制台程序

Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Windows.Forms Module Module1 Private WithEvents app As Excel.Application
Private WithEvents workbook As Excel.Workbook
Private exitXL As Boolean = False Sub Main()
app = New Excel.Application()
app.Visible = True ' We cast to AppEvents_Event when adding an event handler
' dynamically using AddHandler because NewWorkbook
' is the name of both a property and an event.
AddHandler CType(app, Excel.AppEvents_Event).NewWorkbook, _
AddressOf App_NewWorkbook workbook = app.Workbooks.Add() While exitXL = False
System.Windows.Forms.Application.DoEvents()
End While app.Quit()
End Sub
Private Sub App_NewWorkbook(ByVal workbook As Excel.Workbook)
Console.WriteLine(String.Format( _
"Application.NewWorkbook({0})", workbook.Name))
End Sub Private Sub App_WorkbookNewSheet(ByVal workbook As _
Excel.Workbook, ByVal sheet As Object) _
Handles app.WorkbookNewSheet If TypeOf sheet Is Excel.Worksheet Then
Dim worksheet As Excel.Worksheet
worksheet = CType(sheet, Excel.Worksheet)
Console.WriteLine(String.Format( _
"Application.WorkbookNewSheet({0},{1})", _
workbook.Name, worksheet.Name))
End If If TypeOf sheet Is Excel.Chart Then
Dim chart As Excel.Chart = CType(sheet, Excel.Chart)
Console.WriteLine(String.Format( _
"Application.WorkbookNewSheet({0},{1})", _
workbook.Name, chart.Name))
End If End Sub Private Sub Workbook_NewSheet(ByVal sheet As Object) _
Handles workbook.NewSheet If TypeOf sheet Is Excel.Worksheet Then
Dim worksheet As Excel.Worksheet
worksheet = CType(sheet, Excel.Worksheet)
Console.WriteLine(String.Format( _
"Workbook.NewSheet({0})", worksheet.Name))
End If If TypeOf sheet Is Excel.Chart Then
Dim chart As Excel.Chart = CType(sheet, Excel.Chart)
Console.WriteLine(String.Format( _
"Workbook.NewSheet({0})", chart.Name))
End If End Sub Private Sub Workbook_BeforeClose(ByRef cancel As Boolean) _
Handles workbook.BeforeClose exitXL = True End Sub End Module

实例代码:

Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Windows.Forms Module Module1 Private WithEvents app As Excel.Application
Private WithEvents workbook As Excel.Workbook
Private WithEvents worksheet As Excel.Worksheet
Private exitXL As Boolean = False Sub Main()
app = New Excel.Application()
app.Visible = True
'由于NewWorkbook既是事件名又是属性名,所以我们用AddHandler语句动态地添加事件句柄,“Addhandler [Event], addressof [Sub or Function]”
AddHandler CType(app, Excel.AppEvents_Event).NewWorkbook, AddressOf App_NewWorkbook '运行App_NewWorkbook方法
workbook = app.Workbooks.Add()
worksheet = app.Worksheets.Add()
While exitXL = False
System.Windows.Forms.Application.DoEvents()
End While
app.Quit()
End Sub
Private Sub App_NewWorkbook(ByVal workbook As Excel.Workbook) '方法名
Console.WriteLine(String.Format("Application.NewWorkbook({0})", workbook.Name))
End Sub Private Sub App_WorkbookNewSheet(ByVal workbook As Excel.Workbook, ByVal sheet As Object) Handles app.WorkbookNewSheet '对象_事件 If TypeOf sheet Is Excel.Worksheet Then 'typeof 放在一个运算数之前,运算数可以是任意类型,这里传递的是工作表
Dim worksheet As Excel.Worksheet
worksheet = CType(sheet, Excel.Worksheet)
Console.WriteLine(String.Format("Application.WorkbookNewSheet({0},{1})", workbook.Name, worksheet.Name))
End If If TypeOf sheet Is Excel.Chart Then 'typeof 放在一个运算数之前,运算数可以是任意类型,这里传递的是透视表
Dim chart As Excel.Chart = CType(sheet, Excel.Chart)
Console.WriteLine(String.Format("Application.WorkbookNewSheet({0},{1})", workbook.Name, chart.Name))
End If End Sub Private Sub Workbook_NewSheet(ByVal sheet As Object) Handles workbook.NewSheet '对象_事件 If TypeOf sheet Is Excel.Worksheet Then 'typeof 放在一个运算数之前,运算数可以是任意类型,这里传递的是工作表
Dim worksheet As Excel.Worksheet
worksheet = CType(sheet, Excel.Worksheet)
Console.WriteLine(String.Format("Workbook.NewSheet({0})", worksheet.Name))
End If If TypeOf sheet Is Excel.Chart Then ''typeof 放在一个运算数之前,运算数可以是任意类型,这里传递的是透视表
Dim chart As Excel.Chart = CType(sheet, Excel.Chart)
Console.WriteLine(String.Format("Workbook.NewSheet({0})", chart.Name))
End If End Sub Private Sub Workbook_BeforeClose(ByRef cancel As Boolean) Handles workbook.BeforeClose '对象_事件 exitXL = True End Sub End Module

实例效果:

VSTO开发指南(VB2013版) 第四章 Excel编程的更多相关文章

  1. VSTO开发指南(VB2013版) 第一章 Office对象模型

    完美地将visual basic和office 办公软件结合起来.来自微软公司VSTO小组的权威专家所编著. 全书共712页,内容极其全面而深入,猛一看,厚地犹如庞然大物.看完离大神就不远了哦< ...

  2. Gradle 1.12用户指南翻译——第二十四章. Groovy 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  3. Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具

    摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本 ...

  4. VSTO开发指南(VB2013版) 第三章 Excel编程

    通过前两章的内容,有了一定的基础,但进入第三章,实例的步骤非常多,并且随着VS版本的升级,部分功能菜单界面发生了很大变化,所以,第三章的案例我将逐步编写! 实例3.1的目标就是给Excel写一个加载宏 ...

  5. VSTO开发指南(VB2013版) 第二章 Office解决方案介绍

    实例2.1 通过控制台实现对Excel的自动化处理 书本第32页 注:添加两个引用: 第一个:程序集—框架—“System.Windows.Forms 4.0.0.0”第二个:程序集—扩展—“Micr ...

  6. C++PrimerPlus第6版 第四章——复合类型

    1,复合类型主要包含:数组.结构.联合.枚举.类.指针.引用等. 2,数组.长度必须确定.即编译阶段,数组的长度就得确定好.所以只能使用常量(#define.const)声明数组长度.如果使用变量声明 ...

  7. Java 线程第三版 第四章 Thread Notification 读书笔记

    一.等待与通知 public final void wait() throws InterruptedException      等待条件的发生. public final void wait(lo ...

  8. C#高级编程第11版 - 第四章 索引

    [1]4.2 继承的类型 1.C#不支持类的多继承,但它支持一个接口继承自多个接口. 2.单继承:单继承允许一个类继承自另外一个基类,C#支持. 3.多级继承:多级继承允许创建一个类继承自它的父类,而 ...

  9. 《CoffeeScript应用开发》学习: 第四章-改进应用程序

    检查值是否存在 使用存在运算符 CoffeeScript中有一个非常有用的存在运算符?,它能正确地处理值是否存在(存在的意思为变量不为undefined或者null)的情况.在变量后添加?来判断它是否 ...

随机推荐

  1. Redhat下如何查看nvidia显卡的工作状况

    安装完毕nvidia显卡驱动后,可以使用命令来查看显卡的工作状况,命令如下: nvidia-smi 输入上述命令后,显示界面如下 安装nvidia显卡驱动的步骤,请参照驱动安装cuda和cudnn.

  2. Data for the People: How to Make Our Post-Privacy Economy Work for You

    等翻译成 chinese在看吧

  3. 创建dynamics CRM client-side (四) - Namespace Notation in JS

    我们在开发的时候会写很多functions. 但是这些functions 管理起来很麻烦. 微软内部建议我们使用namespace notation的形式管理我们的代码 // Converting f ...

  4. 使用requests模块的网络编程

    python操作网络,也就是打开一个网站,或者请求一个http接口,本篇是介绍使用request模块的使用方式. 在使用requests模块之前需要先安装,在cmd中输入:pip install re ...

  5. kuangbin专题专题十一 网络流 Going Home POJ - 2195

    题目链接:https://vjudge.net/problem/POJ-2195 思路:曼哈顿距离来求每个人到每个房间的距离,把距离当作费用. 就可以用最小费用最大流来解决了,把每个房子拆成两个点,限 ...

  6. http1.0、http1.x、http 2和https梳理

    http1.0.http1.x.http 2和https梳理 Http1.x 线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞 http1.0 缺陷:浏览器与服务器只保持 ...

  7. oc---instancetype和id的异同

    [instancetype和id的异同] 相同点:都可以作为方法的返回类型. 不同点: (1)instancetype可以返回方法所在类相同类型的对象,id只能返回未知类型的对象: (2)instan ...

  8. springIOC源码接口分析(九):Environment

    先贴一下接口继承关系图,spring容器启动的时候会初始化环境,所以此接口相关接口非常有必要进行了解: 一 PropertyResolver接口 Environment继承了该接口,PropertyR ...

  9. js笔记(5)--location的用法

    !DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g ...

  10. ubuntu 如何添加alias

    公司的nx 上面一般使用gvim 编辑文件.并且为gvim 增加了alias,只要敲 g 就是gvim 的意思,这样编辑一个文件只需要 g xxx.v 就可以了.非常方便. 在自己电脑上安装了ubun ...