VSTO开发指南(VB2013版) 第四章 Excel编程
实例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编程的更多相关文章
- VSTO开发指南(VB2013版) 第一章 Office对象模型
完美地将visual basic和office 办公软件结合起来.来自微软公司VSTO小组的权威专家所编著. 全书共712页,内容极其全面而深入,猛一看,厚地犹如庞然大物.看完离大神就不远了哦< ...
- Gradle 1.12用户指南翻译——第二十四章. Groovy 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具
摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本 ...
- VSTO开发指南(VB2013版) 第三章 Excel编程
通过前两章的内容,有了一定的基础,但进入第三章,实例的步骤非常多,并且随着VS版本的升级,部分功能菜单界面发生了很大变化,所以,第三章的案例我将逐步编写! 实例3.1的目标就是给Excel写一个加载宏 ...
- VSTO开发指南(VB2013版) 第二章 Office解决方案介绍
实例2.1 通过控制台实现对Excel的自动化处理 书本第32页 注:添加两个引用: 第一个:程序集—框架—“System.Windows.Forms 4.0.0.0”第二个:程序集—扩展—“Micr ...
- C++PrimerPlus第6版 第四章——复合类型
1,复合类型主要包含:数组.结构.联合.枚举.类.指针.引用等. 2,数组.长度必须确定.即编译阶段,数组的长度就得确定好.所以只能使用常量(#define.const)声明数组长度.如果使用变量声明 ...
- Java 线程第三版 第四章 Thread Notification 读书笔记
一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(lo ...
- C#高级编程第11版 - 第四章 索引
[1]4.2 继承的类型 1.C#不支持类的多继承,但它支持一个接口继承自多个接口. 2.单继承:单继承允许一个类继承自另外一个基类,C#支持. 3.多级继承:多级继承允许创建一个类继承自它的父类,而 ...
- 《CoffeeScript应用开发》学习: 第四章-改进应用程序
检查值是否存在 使用存在运算符 CoffeeScript中有一个非常有用的存在运算符?,它能正确地处理值是否存在(存在的意思为变量不为undefined或者null)的情况.在变量后添加?来判断它是否 ...
随机推荐
- map转URL
package com.psm.util; import java.util.Map; public class MapSwitchUrl { public static String getUrlP ...
- (1)C#连接数据库:Connection对象
连接数据库:Connection对象 1.Connection对象概述 Connection对象是一个连接对象,主要功能是建立与物理数据库的连接.其主要包括4种访问数据库的对象类,也可称为数据提供 ...
- python,finally的应用
脚本执行过程中可能因为被测试的环境有改变导致中间某一部分无法继续执行下去 可以在最后一行加上finally来执行最后一句脚本 比如 最后执行退出 表示 无论中间过程失败还是成功,最终都会执行退出操作 ...
- 深入理解ClassLoader
深入理解ClassLoader ClassLoader 作用 负责将 Class 加载到 JVM 中 ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoade ...
- Centos 7 最小化部署zabbix
前言 文章内容是作者本人编写,之前一直放在word文档中,突然有闲情转移到博客上来了,欢迎后续观看者有问题找我探讨~~~ 废话不多说,先说下原理吧 概述 工作原理 通过c/s模式采集数据,基于b/s模 ...
- java加解密算法--DES
ECB import sun.misc.BASE64Decoder; import javax.crypto.*; import javax.crypto.spec.DESKeySpec; impor ...
- mysql常用语句及实题训练
基本语句操作 创建数据库: create database database-name 1 删除数据库: drop database database-name 1 修改数据名: RENAME DAT ...
- xgboost load model from demp text file
python package : https://github.com/mwburke/xgboost-python-deploy import xgboost as xgb import numpy ...
- Zabbix:主动模式
简介 Zabbix 是由 Alexei Vladishev 开发的一种网络监视.管理系统,基于 Server-Client 架构.可用于监视各种网络服务.服务器和网络机器等状态,官方站点:https: ...
- Go语言实现:【剑指offer】数组中重复的数字
该题目来源于牛客网<剑指offer>专题. 在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组 ...