码迷,mamicode.com
首页 > 其他好文 > 详细

VSTO开发指南(VB2013版) 第四章 Excel编程

时间:2020-02-14 12:31:58      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:处理   import   清单   call   inter   imp   实例   cas   quit   

实例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编程

标签:处理   import   清单   call   inter   imp   实例   cas   quit   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!