一组有用的操作Excel的函数

    技术2022-05-11  107

    在用VB做程序的时候,它本身的报表并不太好使用,因此应用Excel输出数据,是一个好方法,以下是一组操纵Excel的函数据,希望能帮助大家.

    'Excel VBA控制函数

    'Write By WeiHua 2000.10.12

     

    '检测文件Function CheckFile(ByVal strFile As String) As BooleanDim FileXls As ObjectSet FileXls = CreateObject("Scripting.FileSystemObject")

        If IsNull(strFile) Or strFile = "" Then    CheckFile = False        Exit Function    End If

        If FileXls.FileExists(strFile) = False Then               CheckFile = False        Set FileXls = Nothing        Exit Function    Else                CheckFile = True        Set FileXls = Nothing    End If        End Function'检测工作表Function CheckSheet(ByVal strSheet As String, ByVal strWorkBook As String, xlCheckApp As Excel.Application) As BooleanDim L As IntegerDim CheckWorkBook As Excel.Workbook

    If CheckFile(strWorkBook) And strSheet <> "" And Not IsNull(strSheet) Then    For L = 1 To xlCheckApp.Workbooks.Count    If GetPath(xlCheckApp.Workbooks(L).Path) & xlCheckApp.Workbooks(L).Name = strWorkBook Then    Set CheckWorkBook = xlCheckApp.Workbooks(L)    Exit For    End If    Next L                Set CheckWorkBook = xlCheckApp.Workbooks.Open(strWorkBook)    For L = 1 To CheckWorkBook.Worksheets.Count        If CheckWorkBook.Worksheets(L).Name = Trim(strSheet) Then            CheckSheet = True            Exit For        End If    Next L

    Else    MsgBox "工作表不存在,可能是由文件名或工作表名引起的!"    CheckSheet = FalseEnd If

    End Function

    '建立工作表'CreateMethod:1追加'CreateMethod:2覆盖Function CreateSheet(ByVal strSheetName As String, ByVal strWorkBook As String, ByVal CreateMethod As Integer, xlCreateApp As Excel.Application) As BooleanDim xlCreateSheet As Excel.Worksheet

            If CheckFile(strWorkBook) Then            xlCreateApp.Workbooks.Open (strWorkBook)                        If CreateMethod = 1 Then                If CheckSheet(strSheetName, strWorkBook, xlCreateApp) = False Then                Set xlCreateSheet = xlCreateApp.Worksheets.Add        xlCreateSheet.Name = strSheetName        xlCreateApp.ActiveWorkbook.Save                CreateSheet = True        Set xlCreateSheet = Nothing        Else        'MsgBox strSheetName & "工作表已存在!"        CreateSheet = False        Set xlCreateSheet = Nothing        End If                        ElseIf CreateMethod = 2 Then        If CheckSheet(strSheetName, strWorkBook, xlCreateApp) = True Then        Set xlCreateSheet = xlCreateApp.Worksheets(strSheetName)        xlCreateSheet.Cells.Select        xlCreateSheet.Cells.Delete        xlCreateApp.ActiveWorkbook.Save        CreateSheet = True        Set xlCreateSheet = Nothing        Else        'MsgBox strSheetName & "工作表不存在!"        CreateSheet = False        Set xlCreateSheet = Nothing        End If                End If            End If   

    End Function'删除工作表Function DeleteSheet(ByVal strSheetName As String, ByVal strWorkBook As String, xlDeleteApp As Excel.Application) As BooleanDim i As IntegerDim xlDeleteSheet As Excel.Worksheet        If CheckFile(strWorkBook) Then        If CheckSheet(strSheetName, strWorkBook, xlDeleteApp) = True Then        xlDeleteApp.Workbooks.Open (strWorkBook)        If xlDeleteApp.Worksheets.Count = 1 Then        MsgBox "工作薄不能全部删除," & strSheetName & "是最后一个工作表!"        DeleteSheet = False        Exit Function    End If        xlDeleteApp.Worksheets(strSheetName).Delete

        xlDeleteApp.ActiveWorkbook.Save    DeleteSheet = True    Else    DeleteSheet = False    End If        End If   

    End Function

    '复制工作表Function CopySheet(ByVal strSrcSheetName As String, ByVal strSrcWorkBook As String, ByVal strTagSheetName As String, ByVal strTagWorkbook As String, xlCopyApp As Excel.Application) As BooleanDim xlSrcBook As Excel.WorkbookDim xlTagBook As Excel.WorkbookDim ExcelSource As Excel.WorksheetDim ExcelTarget As Excel.WorksheetDim Result As Boolean

    If CheckFile(strSrcWorkBook) = False Or CheckFile(strTagWorkbook) = False ThenSet ExcelSource = NothingSet ExcelTarget = NothingSet xlSrcBook = NothingSet xlTagBook = Nothing    CopySheet = False    Exit FunctionElse

        Set xlSrcBook = xlCopyApp.Workbooks.Open(strSrcWorkBook)        If strSrcWorkBook = strTagWorkbook Then        If strSrcSheetName = strTagSheetName Then        Set ExcelSource = Nothing        Set ExcelTarget = Nothing        Set xlSrcBook = Nothing        Set xlTagBook = Nothing        CopySheet = False        Exit Function        End If            Set xlTagBook = xlSrcBook    Else    Set xlTagBook = xlCopyApp.Workbooks.Open(strTagWorkbook)    End If                Set ExcelSource = xlSrcBook.Worksheets(strSrcSheetName)    Set ExcelTarget = xlTagBook.Worksheets(strTagSheetName)

        ExcelSource.Select    ExcelSource.Cells.Copy    ExcelTarget.Select    ExcelTarget.Paste    xlCopyApp.Application.CutCopyMode = xlCopy        If strSrcWorkBook = strTagWorkbook Then    xlTagBook.Save    xlSrcBook.Save    Else    xlTagBook.Save    End If    Set ExcelSource = NothingSet ExcelTarget = NothingSet xlSrcBook = NothingSet xlTagBook = Nothing    CopySheet = TrueEnd IfEnd Function'复制工作表Function ExcelCopySheet(ByVal strSrcSheetName As String, ByVal strSrcWorkBook As String, ByVal strTagSheetName As String, ByVal strTagWorkbook As String, xlCopyApp As Excel.Application) As BooleanDim xlSrcBook As Excel.WorkbookDim xlTagBook As Excel.WorkbookDim ExcelSource As Excel.WorksheetDim ExcelTarget As Excel.WorksheetDim Result As Boolean

    If CheckFile(strSrcWorkBook) = False Or CheckFile(strTagWorkbook) = False ThenSet ExcelSource = NothingSet ExcelTarget = NothingSet xlSrcBook = NothingSet xlTagBook = Nothing    CopySheet = False    Exit FunctionElse

        Set xlSrcBook = xlCopyApp.Workbooks.Open(strSrcWorkBook)        If strSrcWorkBook = strTagWorkbook Then        If strSrcSheetName = strTagSheetName Then        Set ExcelSource = Nothing        Set ExcelTarget = Nothing        Set xlSrcBook = Nothing        Set xlTagBook = Nothing        CopySheet = False        Exit Function        End If            Set xlTagBook = xlSrcBook    Else    Set xlTagBook = xlCopyApp.Workbooks.Open(strTagWorkbook)    End If                Set ExcelSource = xlSrcBook.Worksheets(strSrcSheetName)    Set ExcelTarget = xlTagBook.Worksheets(strTagSheetName)

        ExcelSource.Select    ExcelSource.Copy before    ExcelTarget.Select    ExcelTarget.Paste    xlCopyApp.Application.CutCopyMode = xlCopy        If strSrcWorkBook = strTagWorkbook Then    xlTagBook.Save    xlSrcBook.Save    Else    xlTagBook.Save    End If    Set ExcelSource = NothingSet ExcelTarget = NothingSet xlSrcBook = NothingSet xlTagBook = Nothing    CopySheet = TrueEnd IfEnd Function

    '关闭Excel应用Function CloseExcelApp(xlApp As Object)On Error Resume NextxlApp.QuitSet xlApp = NothingEnd Function

    '建立Excel应用Function CreateExcelApp(QuitApp As Boolean) As ObjectOn Error Resume NextDim xlObject As ObjectIf CheckExcel Then

    Set xlObject = GetObject(, "Excel.Application")If err.Number <> 0 Then    Set xlObject = Nothing    Set xlObject = CreateObject("Excel.Application")    CreateExcelApp = xlObjectElse    If QuitApp Then    xlObject.Quit    Set xlObject = Nothing    Set xlObject = CreateObject("Excel.Application")    End If    CreateExcelApp = xlObjectEnd If

    End If

    End Function

    '检测EXCEL环境Function CheckExcel() As BooleanDim xlCheckApp As ObjectSet xlCheckApp = CreateObject("Excel.Application")

        If xlCheckApp Is Nothing Then        MsgBox "对不起,系统未检测到EXCEL安装,请重新检查EXCEL是否被正确安装!"        CheckExcel = False        xlCheckApp.Quit        Set xlCheckApp = Nothing        Exit Function    Else        xlCheckApp.Quit        CheckExcel = True        Set xlCheckApp = Nothing    End IfEnd Function

    Function CreateWorkBook(ByVal strWorkBook As String, xlApp As Excel.Application)Dim xlCreateWorkBook As Excel.Workbook

    Set xlCreateWorkBook = xlApp.Workbooks.Add

    xlCreateWorkBook.SaveAs (strWorkBook)End FunctionFunction GetPath(strPath As String) As StringGetPath = IIf(Len(strPath) = 3, strPath, strPath & "/")End Function

     

    这上面的函数只不过是一部分,其于的因为专用目的,写不标准,以后也许会整理出来一份标准的函数库的!

    w.hua@ynmail.com


    最新回复(0)