当前位置: 首页 > news >正文

快速创建Word箱单(1/2)

在日常办公中,经常需要将 Excel 中的表格数据导出到 Word 文档进行汇报或打印。本文介绍一种 VBA 方法,可以批量将 Excel 数据导出到 Word。

实例需求:Excel数据表包含三列:箱号、数量、型号。

在这里插入图片描述

根据数据创建Word文档

  • 设置文档字体(微软雅黑)、字号(40)及水平居中格式
  • 每页第一行为空行
  • 每组数据分页显示
  • 如果第3列有多个型号(逗号分隔),那么拆分为单个型号

Word文档如下图所示。
在这里插入图片描述

示例代码如下:

Sub ExportToWord_1()Const wdAlignParagraphCenter As Long = 1Const wdBreakPage As Long = 7Const wdFormatXMLDocument As Long = 16Const wdReplaceAll As Long = 2Dim wb As Workbook: Set wb = ThisWorkbookDim ws As Worksheet: Set ws = wb.Worksheets("Sheet1")Dim dataArr As VariantdataArr = ws.Range("A1").CurrentRegion.ValueDim wdApp As Object: Set wdApp = CreateObject("Word.Application")wdApp.Visible = FalseDim wdDoc As Object: Set wdDoc = wdApp.Documents.Add()With wdDoc.Styles("Normal").Font.Name = "微软雅黑".Size = 40End WithWith wdDoc.Styles("Normal").ParagraphFormat.Alignment = wdAlignParagraphCenter.SpaceAfter = 0.SpaceBefore = 0End WithDim boxNo As String, qty As String, models As String, fname As StringDim arrModels, j As Long, modelItem As String, i As Long, sTxtFor i = 2 To UBound(dataArr, 1)boxNo = Trim(CStr(dataArr(i, 1)))qty = Trim(CStr(dataArr(i, 2)))models = Trim(CStr(dataArr(i, 3)))If boxNo <> "" Or qty <> "" Or models <> "" ThenarrModels = Split(models, ",")For j = LBound(arrModels) To UBound(arrModels)modelItem = Trim(arrModels(j))wdDoc.Characters.Last.Text = _vbCrLf & dataArr(1, 1) & vbCrLf & boxNo & vbCrLf & _dataArr(1, 2) & vbCrLf & qty & vbCrLf & _dataArr(1, 3) & vbCrLf & modelItem & vbCrLfIf i < UBound(dataArr) Or j < UBound(arrModels) Then _wdDoc.Characters.Last.InsertBreak wdBreakPageNext jEnd IfNext ifname = wb.Path & "\" & Format(Now, "yyyymmdd_hhnnss") & ".docx"wdDoc.SaveAs2 Filename:=fname, FileFormat:=wdFormatXMLDocumentwdDoc.Close FalsewdApp.QuitMsgBox "已生成 Word 文件:" & vbCrLf & fname, vbInformation
End Sub

【代码解析】
第1~5行代码Word定义常量,由于代码使用了后期绑定方式创建Word对象,因此无法识别这些Word常量,需要转换为对应的数值。
第6行代码声明并设置 wb 为当前工作簿 ThisWorkbook
第7行代码声明并设置 ws 为当前工作簿中的工作表 “Sheet1”。
第9行代码将 “Sheet1” 工作表的数据表读入数组 dataArr,便于高效批量处理。
第10行代码创建一个 Word 应用程序对象 wdApp
第11行代码将 Word 应用程序设为不可见状态,以便后台执行操作。
第12行代码创建一个新的 Word 文档对象 wdDoc,并基于默认模板生成空白文档。
第13~16行代码修改 Word 文档的“Normal”样式字体属性,将字体设置为“微软雅黑”、字号为 40,用于输出大标题。
第17~21行代码设置“Normal”样式段落格式,文本居中显示,段前段后间距为零。
第24行代码开始循环,从数据第二行起(跳过表头)逐行读取导出数据。
第25~27行代码获取当数据行内容,并去除空格,保存在变量中。
第28行代码判断当前行是否为空,若三列均为空则跳过,否则进入导出逻辑。
第29行代码将型号字符串按英文逗号拆分为数组 arrModels,用于逐个输出。
第30行代码开始遍历当前行中的每个型号项。
第31行代码去除型号项两端空格并存入变量 modelItem。
第32~35行代码通过字符串拼接方式,将表头字段与当前数据写入 Word 文档,字段之间以换行符 vbCrLf 分隔。
第36行代码判断是否为最后一条记录,若不是则插入分页符,使每组数据独立显示在一页。
第37行代码执行分页符插入操作。
第41行代码生成导出文件名,命名格式为 “年月日_时分秒.docx”,并保存在工作簿同一目录下。
第42行代码将 Word 文档保存到指定路径,格式为 XML Document(.docx)。
第43行代码关闭 Word 文档对象,不保存后续修改。
第44行代码退出 Word 应用程序,释放资源。
第45行代码弹出提示框,显示生成的 Word 文件路径及名称。

http://www.dtcms.com/a/544449.html

相关文章:

  • 营销型网站建设公司易网拓做网站属于什么费用
  • 马蜂窝网络营销网站建设手机编程工具
  • iOS 抓包实战 从原理到复现、定位与真机取证全流程
  • 宝塔反向代理后就访问不到django服务中间件匹配的图片文件夹中的图片了
  • 【网络核心协议全景解析】IP、TCP、UDP与HTTP(多表格深度对比)
  • GStreamer 和 FFmpeg 两大开源工具简要对比
  • Fastlane 结合 开心上架(Appuploader)命令行实现跨平台上传发布 iOS App 的完整方案
  • Rust 中 WebSocket 支持的实现:从协议到生产级应用
  • LangChain生态介绍与实战
  • 前端基础之《React(5)—webpack简介-集成CSS和SASS支持》
  • 国外手机网站源码邵阳 做网站公司
  • 机器学习(3)---线性算法,决策树,神经网络,支持向量机
  • 网站建设服务费属于什么科目中山 灯饰 骏域网站建设专家
  • 操作系统(9)虚拟内存-内存映射
  • 30. 文件IO (1)
  • 技术深析:衡石 Agentic BI 的架构革命与核心技术突破
  • UVa 12333 Revenge of Fibonacci
  • rank(A+E) >= rank(A)证明
  • 未来之窗昭和仙君(四十三)开发布草管理系统修仙版——东方仙盟筑基期
  • VMware 虚拟机网络故障
  • 河南省建设厅举报网站建网站需要多少资金
  • 网站开发常用的谷歌插件企业首次建设网站的策划流程
  • 计算机3D视觉:Pytorch3d的环境配置与初步使用
  • 国产化转型实战:制造业供应链物流系统从MongoDB至金仓数据库迁移全指南
  • 从零开始学 Rust:环境搭建、基础语法到实战项目全流程
  • S11e Protocol 完整白皮书
  • CUDA:通往大规模并行计算的桥梁
  • AR智能眼镜:变电站巡检误操作的“电子安全员”
  • Rust 中的内存对齐与缓存友好设计:性能优化的隐秘战场
  • Springboot3+mqttV5集成(Emqx 5.8.3版本)