关闭

通过VBA操纵Excel的通用类库

2026人阅读 评论(0) 收藏 举报

下面的这个类ExcelLibrary是一个非常通用的通过VBA操纵Excel的类, 是我在工作中总结,整理,借鉴(借鉴了一些微软的例子)并多次改进和使用的,现在在这里共享给大家.
起初程序没有注释,为了便于理解,我刚刚补上了一些注释.

'操纵Excel的通用类库VB.Net

Imports Excel

Public Class ExcelLibrary
  'Excel application代表Excel本身
    Private mExcelApp As Excel.Application
    'Workbook就是Excel中的工作簿
    Private mWorkBook As Excel.Workbook
    'Worksheet就是我们在Excel文件中看到的Sheet1,Sheet2...
    Private mWorkSheet As Excel.Worksheet

    Public Sub New()
      '启动一个Excel应用程序
        mExcelApp = New Excel.Application
    End Sub

    Public Sub Open()
      '新建一个工作簿
        mWorkBook = mExcelApp.Workbooks.Add()
    End Sub

    Public Sub Open(ByVal Template As String)
      '通过模板新建一个工作簿
        mWorkBook = mExcelApp.Workbooks.Add(Template)
    End Sub

    Public Sub SetActiveSheet(ByVal SheetName As String)
      '设置当前活动的Sheet
        mWorkSheet = mWorkBook.Worksheets(SheetName)
    End Sub

    Public Sub AddNewSheet(ByVal SheetName As String)
      '添加一个新Sheet
        mWorkSheet = mWorkBook.Worksheets.Add()
        mWorkSheet.Name = SheetName
    End Sub

    Public Sub HideSheet(ByVal SheetName As String)
      '隐藏某个Sheet(有时这个功能也是需要的)
        mWorkBook.Worksheets(SheetName).Visible = False
    End Sub

    Public Sub CopyRange(ByVal SheetName As String, ByVal Cell1 As String, ByVal Cell2 As String)
      '在Excel中区域性Copy
        SetActiveSheet(SheetName)
        mWorkSheet.Range(Cell1, Cell2).Copy()
    End Sub

    Public Sub PasteRange(Optional ByVal SheetName As String = "")
      '在Excel中区域性Paste
        If SheetName <> "" Then
            SetActiveSheet(SheetName)
        End If
        mWorkSheet.Paste()
    End Sub

    Public Sub ChangeSheetName(ByVal SheetOldName As String, ByVal SheetNewName As String)
      '更改Sheet名字
        mWorkBook.Worksheets(SheetOldName).Name = SheetNewName
    End Sub

    Public Sub SetValue(ByVal CellPosition As String, ByVal Value As String)
      '设置某个单元格的值
        mWorkSheet.Range(CellPosition).FormulaR1C1 = Value
    End Sub

    Public Sub SetValue(ByVal RangeX As String, ByVal RangeY As String, ByVal Value As String(,))
      '设置某一区域的值,这个功能非常有用
        Dim rg As Range
        rg = mWorkSheet.Range(RangeX, RangeY)
        rg.Value = Value
    End Sub

    Public Sub SaveAs(ByVal FileName As String)
      '保存
        mWorkBook.SaveAs(FileName)
    End Sub

    Public Sub Close()
      '关闭
        mWorkSheet = Nothing
        mWorkBook = Nothing
        mExcelApp.Quit()
        mExcelApp = Nothing
        GC.Collect()
    End Sub
End Class

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51003次
    • 积分:815
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:2篇
    • 译文:1篇
    • 评论:14条
    最新评论