zoukankan      html  css  js  c++  java
  • 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

    实例效果:

  • 相关阅读:
    jQuery的选择器中的通配符[id^='code']
    浏览器调试js
    google浏览器调试js
    【暑假】[实用数据结构]UVAlive 3026 Period
    【暑假】[实用数据结构]UVAlive 3942 Remember the Word
    【暑假】[实用数据结构] AC自动机
    【暑假】[实用数据结构]KMP
    【暑假】[实用数据结构]前缀树 Trie
    【暑假】[实用数据结构]UVa11235 Frequent values
    【暑假】[实用数据结构]UVAlive 4329 Ping pong
  • 原文地址:https://www.cnblogs.com/xiehaofeng/p/12306840.html
Copyright © 2011-2022 走看看