zoukankan      html  css  js  c++  java
  • 20161227xlVBA多文件合并计算

    Sub NextSeven_CodeFrame()
    '应用程序设置
    
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Application.Calculation = xlCalculationManual
    
        '错误处理
        On Error GoTo ErrHandler
    
        '计时器
        Dim StartTime, UsedTime
        StartTime = VBA.Timer
        
        Dim msg
        msg = MsgBox("本次执行将会预先清除合并计算的区域,重要文件请做好备份,并且请您确认当前表就是您要汇总的总表!是否继续执行?按是继续执行!按否退出执行!", vbYesNo, "NS Excel工作室")
        If msg = vbNo Then Exit Sub
    
        Dim ShtName
        Dim ShtIndex
        Dim RngAddress
    
        msg = MsgBox("是否指定分表的名称?按是则输入分表名称,按否则输入分表的序号!", vbYesNo, "NS Excel工作室")
        If msg = vbYes Then
            ShtName = Application.InputBox("请输入分表名称:", "NS Excel工作室", , , , , , 2)
        Else
            ShtIndex = Application.InputBox("请输入分表序号:", "NS Excel工作室", , , , , , 1)
        End If
        RngAddress = "B6:AU12"
        t = VBA.Timer
        Dim FileCount&
        Dim wb As Workbook, OpenWb As Workbook
        Dim sht As Worksheet, OneSht As Worksheet
        Dim Rng As Range, OneRng As Range
        Dim arr() As Double, NewArr As Variant
        Dim FolderPath$, FileName$
        Dim oneCell As Range
        Set wb = Application.ThisWorkbook
        Set sht = wb.ActiveSheet
        Set Rng = sht.Range(RngAddress)
        Rng.Cells.ClearContents
        RowCount = Rng.Rows.Count
        columnCount = Rng.Columns.Count
        FolderPath = wb.Path & "子文件夹"
        FileCount = 0
        FileName = Dir(FolderPath & "*.xls*")
        Do While FileName <> ""
            FileCount = FileCount + 1
            Set OpenWb = Application.Workbooks.Open(FolderPath & FileName)
            If ShtName <> "" Then
                Set OneSht = OpenWb.Worksheets(ShtName)
            Else
                Set OneSht = OpenWb.Worksheets(CLng(ShtIndex))
            End If
            Debug.Print OneSht.Name
            Set OneRng = OneSht.Range(RngAddress)
            
            For Each oneCell In OneRng.Cells
                    If Len(oneCell.Value) > 0 Then
                        If IsNumeric(oneCell.Value) = False Then
                            MsgBox "文件名:" & FileName & "  单元格: " & oneCell.Address & "  的内容不是数字,不能相加,请规范后再次执行求和!" & "——NextSeven竭诚为您服务。" & vbCrLf & "更多服务需求请咨询:QQ84857038 淘宝店号9157940 店铺OfficeVBA自动化", vbOKOnly + vbCritical, "NextSeven提示您"
                            Exit Sub
                        End If
                    End If
            Next oneCell
            
            
            OneRng.Copy
            Rng.Cells(1, 1).PasteSpecial xlPasteValues, xlAdd, True, False
            OpenWb.Close False
            FileName = Dir
        Loop
    
        '运行耗时
        UsedTime = VBA.Timer - StartTime
        MsgBox "本次运行耗时:" & Format(UsedTime, "0.0000000秒")
    ErrorExit:        '错误处理结束,开始环境清理
        Set wb = Nothing
        Set sht = Nothing
        Set Rng = Nothing
    
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
        Application.Calculation = xlCalculationAutomatic
        Exit Sub
    ErrHandler:
        If Err.Number <> 0 Then
            MsgBox Err.Description & "!", vbCritical, "错误提示!"
            'Debug.Print Err.Description
            Err.Clear
            Resume ErrorExit
        End If
    End Sub
    

      

  • 相关阅读:
    Linux考试题附答案
    MariaDB数据库主从复制实现步骤
    LinuxCentos系统安装Mariadb过程记录
    LinuxCentos系统安装Nginx过程记录
    VMware虚拟机不能联网的解决办法
    Linux centos下设置定时备份任务
    如何修改本地hosts文件?
    mysql用户授权以及权限收回
    Ubuntu系统下完全卸载和安装Mysql
    C++之类和对象的使用(一)
  • 原文地址:https://www.cnblogs.com/nextseven/p/7133845.html
Copyright © 2011-2022 走看看