zoukankan      html  css  js  c++  java
  • 20170727xlVBA根据数据表和模板工作簿生成个人明细表工作簿

    Sub CreateTables()
        Dim Wb As Workbook
        Dim OpenWb As Workbook
        Dim Sht As Worksheet
        Dim Rng As Range
        Dim Arr As Variant
        Dim i As Long
        Const HEAD_ROW As Long = 2
        Dim EndRow As Long
    
        '模板文件名和路径
        Const ModelName As String = "社+名.xlsx"
        Dim ModelPath As String
        '生成文件名和路径
        Dim NewName As String
        Dim NewPath As String
    
        Set Wb = Application.ThisWorkbook
        Set Sht = Wb.Worksheets("明细表")
    
        ModelPath = Wb.Path & "模板" & ModelName    '社+名的完整路径
    
    
        With Sht
            EndRow = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
            '内置方法,返回A列最后一个非空单元格行号
    
            Set Rng = .Range(.Cells(HEAD_ROW + 1, "A"), .Cells(EndRow, "I"))
            '引用区域,左上角单元格,右下角单元格,这样就获取数据区域了 自己领悟一下就知道了
    
            Arr = Rng.Value
            '存在一个数组里面,这样速度好很多
            '和单元格区域是一样的。只是它只有数据,没有框框颜色字体什么的,所以用起来很快
    
    
            Set OpenWb = Application.Workbooks.Open(ModelPath)
            '打开模板文件
    
            For i = LBound(Arr) To UBound(Arr)    '从第一行到最后一行,逐行循环
                'arr相当于是一个有行列结构的数组,和单元格区域是一样的。Lbound可以取到开始行,Ubound可以取到结束行
    
                '开始构建新文件名
                NewName = Arr(i, 9) & "-" & Arr(i, 2) & ".xlsx"
                'i是可变的,9就是第I列 经办行,2就是第B列的客户名称,新文件名就弄好了
                NewPath = Wb.Path & "生成" & NewName
                '新文件名的完整路径 就构造好了
    
                '开始填表
                '这里就做两个示范,剩下的你自己填就知道了
                '第一个sheet
                OpenWb.Worksheets("(一)档案封皮").Range("B13").Value = Arr(i, 2)    '借款人
                OpenWb.Worksheets("(一)档案封皮").Range("A23").Value = Arr(i, 9)    '经办行
    
                OpenWb.Worksheets("(二)债务主体认定书").Range("B4").Value = Arr(i, 2)    '经办行
                OpenWb.Worksheets("(二)债务主体认定书").Range("B5").Value = "'" & Arr(i, 1)   '贷款号
               '注意注意注意   长数字 前面一定要加上  "'" &  ,这样防止后面三位数字变成 000
    
                '************剩下自己弄
    
                OpenWb.SaveCopyAs NewPath    '填完就另存副本
    
            Next i
    
    
            OpenWb.Close False    '关掉模板
        End With
    
        '释放对象,告诉内存,这些东东我不要了,不然一直占着内存
        Set Wb = Nothing
        Set OpenWb = Nothing
        Set Sht = Nothing
        Set Rng = Nothing
        Erase Arr    '擦除数组
    
    End Sub
    

      

  • 相关阅读:
    正则表达式
    移动开发知识点收集
    SQL Server
    百度数据图表插件Echarts
    Xamarin
    Func与Action
    MVC Core
    利用 async & await 的异步编程
    CSS3
    [leetcode]374. Guess Number Higher or Lower
  • 原文地址:https://www.cnblogs.com/nextseven/p/7246193.html
Copyright © 2011-2022 走看看