• VBA 表格操作2 表格复制


    office excel文件有工作簿,里面存放一张张表,表的名字叫做标签名,簿名就是我们常见的的文件名,簿的类型有“一簿一表”与“一簿多表”。
    完成将多张表合并到一个工作簿中,并为表标签命名,增加制表日期。

    簿与簿直接的操作基本如下:

    1.一簿一表之间的复制 一对一
    2.多个一簿一表的合并
    3.多个一簿多表与一簿一表的合并

    现在在目录下新建文件夹test,并在里面新建2个一簿3表的excel文件li1,li2,其中li1中3张表的标签分别为ac,li2中表的标签分别为1、2、3,1个一簿1表的excel文件li0,表标签为0.
    如图所示

    一簿一表之间的复制

    Sub 一簿一表之间的复制
    Application.ScreenUpdating = F
    
    Dim wb As Workbook
    
        filename = "C:UsersliyiDesktop	est" & "li1.xlsx"
        Set wb = Workbooks.Add
        
        Dim tempwb As Workbook
        
        Set tempwb = GetObject(filename)
        
            tempwb.Worksheets(1).Copy before:=wb.Worksheets(wb.Worksheets.Count)
            wb.SaveAs ThisWorkbook.Path & "一簿一表之间的复制.xlsx"
            wb.Close
    End Sub
    

    这样就把li1中的表a,复制到新建的表中,并插在默认第一张表之前。
    结果如图

    多个一簿一表之间的合并

    Sub 多个一簿一表的合并()
    Application.ScreenUpdating = F
    
    Dim wb As Workbook, filename As String
    
        filename = Dir("C:UsersliyiDesktop	est" & "li*.xlsx")  ' dir函数遍历文件,并将文件名赋值给filename
        Set wb = Workbooks.Add
        
        Dim tempwb As Workbook, fn As String
        Do While filename <> ""
        fn = "C:UsersliyiDesktop	est" & "" & filename   '将文件路径赋值给fn
        Set tempwb = GetObject(fn)                           '获取到该文件
            tempwb.Worksheets(1).Copy before:=wb.Worksheets(wb.Worksheets.Count)
            ActiveSheet.Name = Left(filename, Len(filename) - 5) & "_" & tempwb.Worksheets(1).Name
            '以工作簿的名字加上"_"加上表标签为新簿中的表命名
        
            filename = Dir
            Loop
            Application.DisplayAlerts = False  '“删除工作表警告提示” 取消
            Sheets("sheet1").Delete            '删除新建簿时默认生成的sheet1
            Application.DisplayAlerts = True
            wb.SaveAs ThisWorkbook.Path & "多个一簿一表的合并.xlsx"
            wb.Close
     
    End Sub
    

    新簿是将3个文件中的第一张表复制到新簿,并重新命名
    结果如图:

    多个一簿多表的合并

    Sub 多个一簿多表的合并()
    Application.ScreenUpdating = F
    
    Dim wb As Workbook, filename As String, fn As String
    
    
        filename = Dir("C:UsersliyiDesktop	est" & "li*.xlsx")
        Set wb = Workbooks.Add
        
        Dim tempwb As Workbook
        Do While filename <> ""
           fn = "C:UsersliyiDesktop	est" & "" & filename
            Set tempwb = GetObject(fn)
                Dim sht As Worksheet
                For Each sht In tempwb.Worksheets
                sht.Copy before:=wb.Worksheets(wb.Worksheets.Count)
                 ActiveSheet.Name = Left(filename, Len(filename) - 5) & "_" & sht.Name
               
                Next
            
            filename = Dir
        Loop
            Application.DisplayAlerts = False  '“删除工作表警告提示” 取消
            Sheets("sheet1").Delete
            Application.DisplayAlerts = True
            yue = Month(Date - 1)
            ri = Day(Date - 1)
            
            wb.SaveAs ThisWorkbook.Path & "多个一簿多表的合并()" & yue & ri & ".xlsx"
            wb.Close
     
    End Sub
    
    

    结果如图

  • 相关阅读:
    关于上传组件
    二分查找的时间复杂度
    commander.js
    执行上下文
    谷歌插件开发
    网站性能
    日记
    <<人间失格>>阅读
    Node.js 应该用在什么地方
    浅谈前后端分离与实践 之 nodejs 中间层服务
  • 原文地址:https://www.cnblogs.com/li-volleyball/p/5493015.html
Copyright © 2020-2023  润新知