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

实例效果:

原文地址:https://www.cnblogs.com/xiehaofeng/p/12306840.html

时间: 2024-11-02 09:59:15

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

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

一.等待与通知 public final void wait() throws InterruptedException 等待条件的发生. public final void wait(long timeout) throws InterruptedException 等待条件的发生.如果通知没有在timeout指定的时间内发生,它还是会返回. public final void wait(long timeout, int nanos) throws InterruptedException

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

其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,兼容

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

摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本查找.文本替换. 3.1  查找文本 如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序.POSIX采用三种不同grep变体:grep.egrep.fgrep整合为单个版本,通过不同的选项,分别提供这三种行为模式.who | grep -F root上面使用-F选项,以查找固定字符串r

Java编程思想第四版 第四章个人练习

第四章 练习1:(1)写一个程序,打印1到100的值 public static void main(String[] args) { test(100); } public static void test(int num){ int i=0; while(i<num){ System.out.print(++i); if(i!=100){ System.out.print("."); } } System.out.println(); int j=0; do{ System.

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

C Primer Plus (第五版) 第九章 函数 编程练习

第九章 函数 编程练习 设计函数 min(x,y),返回两个double数值中较小的数值,同时用一个简单的驱动程序测试该函数. #include <stdio.h> double min(double x, double y); int main(void) { double a, b; printf("请输入两个数:\n"); scanf("%lf%lf", &a, &b); printf("两个数中较小的数是:%lf\n&q

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

实例2.1 通过控制台实现对Excel的自动化处理 书本第32页 注:添加两个引用: 第一个:程序集—框架—“System.Windows.Forms 4.0.0.0”第二个:程序集—扩展—“Microsoft.Office.Interop.Excel 14.0.0.0” 程序清单2.1通过控制台程序对Excel自动化处理 Imports Excel = Microsoft.Office.Interop.Excel Module Module1 Private exitXL As Boolean

移动应用微信图像接口开发指南 (iOS版)

使用说明 本文档主要介绍微信图像SDK(iOS版)使用方法,利用SDK可以准确搜索到用户上传的图像. 本文属于入门级文档,旨在帮助开发者快速学习iOS SDK的使用并应用到自身开发工作.具体 API 可到"资源下载 "页下载<微信图像SDK(iOS版)开发手册>进行查询. 准备工作 第一步 创建移动应用 请到"管理中心"创建移动应用,点击"创建移动应用",填写相关资料,然后将该应用提交审核,只有审核通过的应用才能进行开发. 注册完毕,

《大数据技术应用与原理》第二版-第四章分布式数据库HBase

4.1概述 HBase是一个高可靠.高性能.面向列.可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化松散数据. HBase与传统数据库的区别 数据类型上的区别,它把数据存储为未经解释的字符串 数据操作,没有像关系型数据库那样的复杂数据操作,通常采用单表的主键查询. 存储模式,关系型数据库是采用行进行存储的,但是HBase是采用列存储的. 数据索引,HBase只有一个索引,就是行键. 数据维护,HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新