首页 > 其他分享 >VBA代码按模板批量新建Excel工作簿&自动填充单元格信息(2.0)

VBA代码按模板批量新建Excel工作簿&自动填充单元格信息(2.0)

时间:2024-10-23 20:16:34浏览次数:8  
标签:Dim VBA Set 单元格 Excel Range Sheets srcCell

<<<<接续投稿的1.0

1.代码①用于将模板复制到新建工作簿中,代码②用于将源文件(即新建工作簿所需名单所在的那个文件,也是粘贴代码的那个文件)。因此,完成“按模板批量与自动填充信息”这一操作需要准备三个文件。

(文件命名没有严格要求,在操作过程中统一即可,图片中仅作演示)

(1)——>准备好三个文件。Demo - Template和Demo - Value都是源文件,只是名字不同;Template文件为模板文件,各个单元格的文本格式(数字、文本、日期等)您可以设置好,为填充信息做准备。

(2)——>将代码①粘贴到Demo - Template工作簿中,运行,即可得到批量新建并且已经命名好的工作簿。

(3)——>再将代码②粘贴到Demo - Value工作簿中,运行,新建的工作簿中单元格信息即被填充好。

2.为什么不把两个功能合并?调试过了,一直报错,显示计算越界,进入死循环了,后续将做优化。(有会的好兄弟可以评论区交流一下,或者私信我一下,马上优化)

3. 代码如下:

①模板复制

Sub CopySpecificTemplateToNewWorkbook() '定义宏名
    
    '申明变量
    Dim srcWorkbook As Workbook
    Dim destWorkbook As Workbook
    Dim templateWorkbook As Workbook
    
    Dim srcSheet As Worksheet
    Dim destSheet As Worksheet
    
    Dim srcCell As Range
    Dim destCell As Range
 
    Dim templatePath As String
    
    '1————建立循环
    For Each cell In Range("B2:B5") '!!!!需要手动修改为所需文件名保存的单元格列表(此处假设保存在B2:B5单元格中)
    Filename = cell.Text '获取批量新建工作簿所需的文件名
    
    '2————新建工作簿
    Set srcWorkbook = ActiveWorkbook
    Set destWorkbook = Workbooks.Add ' 创建一个新的工作簿
    
    '3————复制模板格式到新建工作簿
    templatePath = "C:\Users\trainee.pxb\Desktop\VBA代码调试\template" '!!!!需要手动修改模板文件所在路径
    Set templateWorkbook = Workbooks.Open(templatePath) '打开模板文件
    templateWorkbook.Sheets(1).Copy Before:=destWorkbook.Sheets(1) '复制模板格式(此处假设模板格式保存在template文件的第一张工作表中)
    
    '4————删除新建工作簿自带的第一个空白工作表
    Application.DisplayAlerts = False ' 关闭自动弹出的提示信息
    destWorkbook.Sheets(2).Delete
    Application.DisplayAlerts = True ' 恢复自动弹出的提示信息
    
    '5————新建工作簿保存并关闭(如不进行此操作,将需手动另存为,较为麻烦)
    destWorkbook.SaveAs Filename:="C:\Users\trainee.pxb\Desktop\VBA代码调试\" & Filename & ".xlsx" ' !!!!需要手动修改修改为想保存新建工作簿的路径
    Workbooks(Filename & ".xlsx").Close SaveChanges:=True
    
    Next '构成循环语句,不可缺失,否则会报错
    
End Sub

②单元格信息填充

Sub CopySpecificCellToNewWorkbook() '定义宏名
    
    '申明变量
    Dim srcWorkbook As Workbook
    Dim destWorkbook As Workbook
    
    Dim srcSheet As Worksheet
    Dim destSheet As Worksheet
    
    Dim srcCell As Range
    Dim destCell As Range
    
    Dim i As Integer
    
    Dim destPath As String
    
    i = 2 '对单元格行号赋初值!!!!请自行修改为您需要的第一个单元格行号
    
    '1————建立循环
    For Each cell In Range("B2:B5") '!!!!需要手动修改为所需文件名保存的单元格列表(此处假设保存在B2:B5单元格中)
    Filename = cell.Text '获取批量新建工作簿所需的文件名
    
    '2————打开新建工作簿
    Set srcWorkbook = ActiveWorkbook
    destPath = "C:\Users\trainee.pxb\Desktop\VBA代码调试\" & Filename & ".xlsx" '!!!!需要手动修改为新建工作簿所在路径
    Set destWorkbook = Workbooks.Open(destPath) '打开新建工作簿
    
    '3————单元格信息复制(请按需求自行修改对应单元格)
    Set srcCell = srcWorkbook.Sheets(1).Range("B" & i) ' 设置源单元格!!!!请修改为实际的工作表索引或名称以及单元格地址
    Set destCell = destWorkbook.Sheets(1).Range("B2")  ' 设置目标单元格!!!!请修改为实际的工作表索引或名称以及单元格地址
    destCell.Value = srcCell.Value ' 将源单元格的值复制到目标单元格
    
    Set srcCell = srcWorkbook.Sheets(1).Range("D" & i)
    Set destCell = destWorkbook.Sheets(1).Range("B3")
    destCell.Value = srcCell.Value
    
    Set srcCell = srcWorkbook.Sheets(1).Range("A" & i)
    Set destCell = destWorkbook.Sheets(1).Range("D2")
    destCell.Value = srcCell.Value
    
    Set srcCell = srcWorkbook.Sheets(1).Range("F" & i)
    Set destCell = destWorkbook.Sheets(1).Range("F2")
    destCell.Value = srcCell.Value
    
    Set srcCell = srcWorkbook.Sheets(1).Range("C" & i)
    Set destCell = destWorkbook.Sheets(1).Range("E3")
    destCell.Value = srcCell.Value
    
    '6————新建工作簿保存并关闭(如不进行此操作,将需手动另存为,较为麻烦)
    Workbooks(Filename & ".xlsx").Close SaveChanges:=True
    'Workbooks(templatePath).Close SaveChanges:=True 此行代码用于关闭template模板文件,暂未调试成功,故保留注释
    i = i + 1 '单元格行号自加1(您也可以限制i的值,添加退出逻辑)
    Next '构成循环语句,不可缺失,否则会报错
    
End Sub

Workbook——工作簿

Sheet——工作表

Cell——单元格

标签:Dim,VBA,Set,单元格,Excel,Range,Sheets,srcCell
From: https://blog.csdn.net/GooBt/article/details/143192500

相关文章

  • 真题练习25-Excel电子表格-全国计算机等级考试一级计算机基础及MS Office应用考试【汪
    第25组请根据题目要求,完成下列操作:1.在考生文件夹下打开EXCEL.XLSX文件:(1)将sheet1工作表的A1:G1单元格合并为一个单元格,内容水平居中;计算“月平均值”行的内容(数值型,保留小数点后1位。利用AVERAGE函数。);计算“最高值”行的内容(三年中各月的最高值,利用MAX函数)。(2)选取“月份”......
  • 重磅!7本On Hold期刊被踢出SCI,10月WOS目录更新,附EXCEL下载
    【SciencePub学术】重磅!10月WOS目录更新,7本SCI被踢,并且被踢期刊均来自此前被OnHold的期刊,看来OnHold期刊的情形真的不容乐观,接下来小编给大家仔细介绍一下期刊变动情况。继上次WOS期刊目录更新之后,本次10月更新共有以下期刊发生变动:•SCIE:有7本期刊由于质量原因被剔除;......
  • Excel批量生成word文档,按模板批量生成word,批量生成pdf
    Excel批量生成word文档软件主页:http://6laohu.com下载地址 按照Word模板从Excel逐行取数据填空式批量生成Word与PDF文档,免安装下载即用,防泄密软件,可离线断网使用比如:我要生成多分销售合同,我准备一个word模板,把合同中的[公司名]、[价格]、[法人]、[日期]都用中括号[]括起来......
  • 使用EasyExcel实现导出excel文件时生成多级下拉选
    前言公司有个需求本来只涉及到两个下拉选项,后面就想能不能实现多个下拉选,当然我这里说的多个下拉选是联动的,比如省、地市、区县这种。实现步骤1、添加EasyExcel的Maven依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><ver......
  • Python与excel交互(xlwt库和openpyxl库的使用)
    xlw库介绍xlwt是用于在Python中操作Excel文件的第三方库,主要用于创建和写入Excel文件(xls格式)。使用xlwt可以方便地设置单元格的样式,像设置字体(如字体大小、颜色等)、对齐方式(水平和垂直对齐)和边框等。还能灵活控制工作表的行高和列宽,以满足不同数据展示的需求。在数据写入......
  • 单元格怎么求和
    单元格求和的方法:1.基本的SUM函数;2.使用快捷键;3.条件求和;4.自动填充。在大多数电子表格应用程序中,使用SUM函数是执行单元格求和的标准方法。该函数的语法通常是=SUM(范围),其中“范围”是您希望求和的单元格范围。1.基本的SUM函数在大多数电子表格应用程序中,使用SUM函数是执行......
  • easyExcel生成excel并导出自定义样式(三)指定列字体样式
    publicclassExcelRowColorHandlerimplementsCellWriteHandler{privatefinalIntegercolumnIndex;privatefinalSet<Integer>redRowIndex;privatefinalSet<Integer>yellowRowIndex;privatefinalSet<Integer>greenRowInd......
  • 动态生成excel动态表头easyExcel
    动态生成excel,内容跟随表头填充 组装调用工具方法:List<FileTitleEntity>titleEntityList=newArrayList<>();titleEntityList.add(newFileTitleEntity("name","姓名"));titleEntityList.add(newFileTitleEntity("idNumber"......
  • VBA中用range生成的行数组或列数组均为二维数组,转成一维方法
    在excel中用range方法生成的行或列数组均为二维数组,1、行数组。如arr=sheet1.range("a1:c1"),这是一行三列的二维数组,用arr(1,1)、arr(1,2)、arr(1,3)均能获取数据,但如用arr(1)、arr(2)、arr(3)获取数组就会出错,提示“下标越界",若用arr(1,1)就会取到数据,所以用range生成的行数......
  • VBA中的基础知识:类型判别及定义
    变量类型 用TypeName()函数可以判断变量类型。TypeName(i)="Single"就是单精度浮点数TypeName(i)="String"就是字符串 另外IsNumeric判断变量的值是否为数值isdate判断变量的值是否为日期isnull判断变量的值是否包含任何有效数据isempty判断变量的值是否为空......