vb 变量赋值为当前选定单元格_第7篇:根据Excel选定行对Word模板填充数据(补充修改)...
https://zhuanlan.zhihu.com/p/76755973?utm_source=wechat_session&utm_medium=social&utm_oi=842149456383193088郭大牛:根据Excel数据生成Word文档
虽然代码可能有一点难,但由于实在是太便利,觉得还是应该拿出来,哪怕简化后的,也是有作用的,主要还是要尽力尝试。开始正题。先看视频。本次只是针对Excel单行数据的单次Word文档填充,逻辑关系上是比较简单的。如果再往下想,循环填充多行,批量形成多个Word文档也是可以的,这个就以后再说了。这一次由于关联到Word,我们要先按如下顺序操作:Excel开发工具栏→VB编辑器→工具→引用→找到Microsoft Word 16.0 Object Library并打钩→确定。这样我们才能关联到Word,实质相当于一个Excel和Word之间的接口。
思路是这样的:定义变量→变量赋值→窗口选择Word模板文件→打开Word模板文件→替换内容→另存替换后的Word文件一、定义变量
Dim StarGun As ObjectDim WordD As ObjectDim PathW As StringDim Tit, TheDate, SP, AP As StringDim a As Integer
这里先把StarGun和WordD定义为对象,PathW、Tit、TheDate、SP、AP定义为字符串型变量,a定义为整数。二、赋值
a = ActiveCell.Row Tit = Cells(a, 2) TheDate = Format(Cells(a, 1), "mm月dd日") SP = Format(Cells(a, 5), "#0.00") AP = Format(Cells(a, 11), "#0.00") Level = Cells(a, 12) & "级"
ActiveCell.Row即取值当前选择的单元格的行号,然后把想要替换的单元格的内容赋值于剩下的5个变量内。如果想要替换更多的单元格内容,就要赋值更多的变量。Format用于调整对象格式。三、窗口选择Word模板文件
With Application.FileDialog(msoFileDialogFilePicker) .Filters.Add "word文件", "*.doc*", 1 .InitialFileName = "C:\Users\Dick\Desktop\vba撰写\" .AllowMultiSelect = False If .Show Then PathW = .SelectedItems(1) Else Exit Sub End With
以上可以解读为:在指定路径下(.InitialFileName = "C:\Users\Dick\Desktop\vba撰写\"),选择文件名含有".doc"的Word文档,只能选择一个Word文档;如果没有选择文件则直接退出本次命令执行。四、打开Word模板文件
Set StarGun = CreateObject("Word.Application") StarGun.Visible = True Set WordD = StarGun.Documents.Open(PathW, , False)
这一段三句功能为打开第三步选择的Word模板文件,其中StarGun.Visible意义在于使这个Word文件打开时处于可见状态,如果为False则是不可见,其它句子就不必纠结了。五、替换内容
本例代码中这一部分虽然比较长,但是基本都是一个个点对点的替换动作,这里只取其一做解释。
With StarGun.Application.Selection .Find.ClearFormatting .Find.Replacement.ClearFormatting With .Find .Text = "{$监测点名称}" .Replacement.Text = Tit End With .Find.Execute Replace:=wdReplaceAll End With
以此为例,主要意思就是把已打开的Word模板中的{$监测点名称},替换为变量Tit(Tit已经赋值)。.Find.Execute Replace:=wdReplaceAll是Word的VBA命令,意思为替换所有内容,每一个变量替换都要带这一句,缺少了会报错。如果需要增减修改替换的变量,复制With .Find至wdReplaceAll,修改赋给Text的内容即可。六、另存替换后的Word文件
WordD.SaveAs ThisWorkbook.Path & "\" & "监测点数据Word" & "(" & Tit & ")" & ".doc"
关于Save as在第二篇宏录制里有解释,这里就不再赘述了。附上完整代码
Sub 按钮8_Click()Dim StarGun As Object 'Word.ApplicationDim WordD As Object 'Word.DocumentDim PathW As String '模板文件路径名Dim Tit, TheDate, SP, AP As StringDim a As Integer a = ActiveCell.Row Tit = Cells(a, 2) TheDate = Format(Cells(a, 1), "mm月dd日") SP = Format(Cells(a, 5), "#0.00") AP = Format(Cells(a, 11), "#0.00") Level = Cells(a, 12) & "级" With Application.FileDialog(msoFileDialogFilePicker) '窗口打开Word文件并不选时报错 .Filters.Add "word文件", "*.doc*", 1 .InitialFileName = "C:\Users\Dick\Desktop\vba撰写\" .AllowMultiSelect = False If .Show Then PathW = .SelectedItems(1) Else Exit Sub End With Set StarGun = CreateObject("Word.Application") '打开模板文件 StarGun.Visible = True Set WordD = StarGun.Documents.Open(PathW, , False) With StarGun.Application.Selection '开始替换 .Find.ClearFormatting 'ClearFormatting为清除目标位置现有格式,如加粗底色等,为后面仅作字符替换做准备 .Find.Replacement.ClearFormatting With .Find .Text = "{$监测点名称}" .Replacement.Text = Tit End With .Find.Execute Replace:=wdReplaceAll 'wdReplaceAll是Word的VBA命令,替换所有内容 With .Find .Text = "{$监测时间}" .Replacement.Text = TheDate End With .Find.Execute Replace:=wdReplaceAll With .Find .Text = "{$S指数}" .Replacement.Text = SP End With .Find.Execute Replace:=wdReplaceAll With .Find .Text = "{$A指数}" .Replacement.Text = AP End With .Find.Execute Replace:=wdReplaceAll With .Find .Text = "{$风险等级}" .Replacement.Text = Level End With .Find.Execute Replace:=wdReplaceAll End With WordD.SaveAs ThisWorkbook.Path & "\" & "监测点数据Word" & "(" & Tit & ")" & ".doc"End Sub
这套程序是我在4月份时开始使用的(我用的不太一样,文中简化了很多),当时真挺难,几乎是每一句都读不懂,只是看出了能增减修改变量的位置,于是不明就里的就开始使用了。因此,看不看得懂可能还真不是十分重要,反正能用就行了,别的以后再说。附件在阅读全文,码【gefv】
完
vb 变量赋值为当前选定单元格_第7篇:根据Excel选定行对Word模板填充数据(补充修改)...相关推荐
- python pandas合并单元格_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- 单击选定单元格后输入新内容_Excel表格处理基本操作部分习题参考解答
Excel 表格处理基本操作部分习题参考解答 1 . Excel 中表示单元格名称时,前面是行号,后面是列号,是吗? 不是.单元格名称用列标 + 行号表示 2 . Excel 左下角的标签只能有 Sh ...
- java 合并和拆分单元格_如何在Microsoft Word中合并和拆分表和单元格
java 合并和拆分单元格 You can easily merge and split cells in Microsoft Word to make your tables more intere ...
- CGAL笔记之单元格复合体和多面体篇—曲面网格
CGAL笔记之单元格复合体和多面体篇-曲面网格 0.前言 1.用法 1.示例 2.连通性 3.范围和迭代器 3.1 示例 4.循环器 1.示例 5.属性 1.示例 6.边界 7.Surface Mes ...
- CGAL笔记之单元格复合体和多面体篇—三维多面体曲面
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 CGAL笔记之单元格复合体和多面体篇-三维多面体曲面 1 介绍 2 定义 3 示例程序 3.1 第一个使用默认值的例子 3.2 顶点中 ...
- CGAL笔记之单元格复合体和多面体篇——多面体凸分解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 CGAL笔记之单元格复合体和多面体篇--多面体凸分解 1 介绍 2 接口使用 1 介绍 对于非凸多面体的许多应用,有一个有效的解决方案 ...
- CGAL笔记之单元格复合体和多面体篇——多面体的 3D Minkowski 和
CGAL笔记之单元格复合体和多面体篇--多面体的 3D 闵可夫斯基和 介绍 分解法 特性和约束 用法 介绍 如下图,勺子和星星的 Minkowski 和. 分解法 计算非凸多面体闵可夫斯基和的分解方法 ...
- vb6 word 2002 合并单元格_干货来了!最实用的Word表格小技巧!
有小伙伴说Word表格太不好做了,不如Excel里面方便,文字方向不听指挥,数据又不好排序,整个表格做起来很不好看.但我们的工作中很多表格又都是在Word中完成的,今天就给大家介绍一下在Word文档中 ...
- 在EXCEL表格中经常会遇到有合并单元格时,汇总计算的公式无法直接下拉自动填充计算,掌握这个小技巧一键汇总
在EXCEL表格中经常会遇到有合并单元格时,汇总计算的公式无法直接下拉自动填充计算,掌握这个小技巧一键汇总 目录 在EXCEL表格中经常会遇到有合并单元格时,汇总计算的公式无法直接下拉自动填充计算,掌 ...
最新文章
- Java生成html为pdf
- Android架构篇-1 项目组织架构
- dsp之BF531笔记
- 任务数量超过线程池负荷了怎么办?拒绝策略安排起来!
- 8-th Android开发之服务器端
- 性能测试真如你想象的那么简单?
- Unity3d开发跳一跳AI(ML-agents)全纪录
- if....else的基本用法
- 使用rvm来管理ruby版本
- 用PHP写Yaf:Yaf_Registry类
- 电脑装两个硬盘在计算机只显示一个,电脑有两个硬盘,如何去掉机械硬盘中的那套系统?...
- Mac操作系统下重装 Mac os X 系统
- Go:sqrt平方根计算(附完整源码)
- Yann LeCun:大模型方向错了,智力无法接近人类
- 31 家企业入选阿里云首期云原生加速器,共建云原生行业新生态
- 2014年初款11寸MacBook Air安装Windows 7 64bit操作系统缺少USB3驱动键盘鼠标失效
- go系列-笔记(第五天)
- 斑马条码打印机断电重启后无法打印问题
- android爬取视频播放地址,Android 视频中抓取图像 - MediaMetadataRetriever
- oracle 导出secquence,oracle等待事件7——事務上的等待事件
热门文章
- 如何开发自己的第1个可以上线的Java项目?
- 假如,只是假如把支付宝存储服务器炸了,里面的钱还在么?
- 【KVM系列04】KVM的I/O 设备直接分配和SR-IOV
- Java中native关键字
- Eclipse自动注册Servlet:web.xml注册和@Servlet注解 实现注册
- i-usb-storer android,i usb storer
- sharemouse切窗口就锁定了什么原因_Excel表格如何锁定,被锁定的表格又该如何解除锁定呢?...
- Gentoo 安装日记 01 (工具准备)
- 三体系建设是什么意思_湖南信息系统建设和服务能力评估体系怎么做?是什么?...
- show status 优化mysql_mysql优化--show status