关于VBA编辑word自动生成报告

这适合于图比较多,表比较多,并且报告格式单一,但每天需要大量出word报告的情况

-工具使用
-难点
-功能块

参考文件

工具

如图片所示,虽然版本可以不同,但库的类别相差不大

难点

  • 输入划分

    一般word文档中的输入是 图和表,如果将输入按照对象类型来划分不同的文件夹,通过划分文件类型,降低了对象处理难度.由此需要1个函数来读取文件路径并存储。

  • 输入处理

    图和表都是需要插入到word文档的,可以不通过判断文件类型来处理。使用bookmark标记对象处在的位置,可以不考率对象类型,根据之前的文件夹划分对象,即可插入正确的对象类型。这里有个难点就是,如何根据word文档模板中的表名和图片名,自动的生成bookmark.(其实只要格式是固定的,自己做1个模板,定义不同表名与图片名的bookmark名字,也可以。这样就限定了使用。只要格式不一样,就需要手动创建word模板)

    举个例子说明,有Table 1: Information_1 和 Table 2: Information_2
    需要在这2行的位置之上插入1个bookmark。手动的做法是,鼠标点击该行上一行的起始位置, 点击菜单栏的 插入->书签->命名并添加书签名

  • 格式调整问题

    对于表格的格式调整,很麻烦。尤其是存在合并单元格的表格。当通过vba,从excel插入表格到对应的bookmark。表格的格式要与word页面想匹配,是个很大的问题。

    图片的格式调整就很容易,只需使输入图片的大小一致即可。 (一般报告的图片输入,都是大小一致的)

功能块

  • openfilemethod() 用于打开文件夹的并计数文件个数

以下2个方程可以实现openfilemethod() 方法(本人不知道VBA中怎么返回多个不同类型的参数,所以分了2个function), 30限定了插入对象个数,其实完全够了,毕竟1个word文档有30幅图很多了。Application.FileDialog(msoFileDialogOpen)是word vba开发手册中实现的方法。

Function openfileway(bol As Boolean) As Variant
Dim lngCount As Long
Dim pathstr(1 To 30) As String
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = bol’可以选择多个文件
.Show
For lngCount = 1 To .SelectedItems.Count
pathstr(lngCount) = .SelectedItems(lngCount)
Next lngCount
End With
openfileway = pathstr
End Function

Function openfilecount(ParamArray arr()) As Integer
Dim i As Integer
For i = 1 To 30
If arr(0)(i) Like “” Then
Exit For
End If
Next
openfilecount = i - 1
End Function

  • addpicture()用于插入图片

Sub addpicture(i As Integer, s As Variant, dcwd As Word.document, ParamArray pathstr())
Dim j As Integer
For j = 1 To i
If InStr(pathstr(0)(j), s) > 0 Then
dcwd.InlineShapes.addpicture _
Filename:=pathstr(0)(j), _
LinkToFile:=False, SaveWithDocument:=True, _
Range:=dcwd.bookmarks(s).Range
End If
Next
End Sub

  • picturesize()可以调整图片大小

Sub picturesize(dcwd As Word.document)
Dim j As Integer
For j = 1 To dcwd.InlineShapes.Count
picheight = dcwd.InlineShapes(j).Height
picwidth = dcwd.InlineShapes(j).Width
dcwd.InlineShapes(j).Height = picheight * 0.75 ‘设置高度为0.75倍
dcwd.InlineShapes(j).Width = picwidth * 0.75 ‘设置宽度为0.75倍
dcwd.InlineShapes(j).Borders.OutsideLineStyle = wdLineStyleSingle
Next j
End Sub

  • exceltablepaste()用于插入table表

Sub excelpaste(i As Integer, s As Variant, dcwd As Word.document, sheetname As String, srange As String, bookmark As String, ParamArray pathstr())
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim rnReport As Range

'Initialize the Excel objects.
Set wbBook = GetObject(workpath(workcount))
Set wsSheet = wbBook.Worksheets(sheetname)
Set rnReport = wsSheet.Range(srange)Set wdbmRange = dcwd.bookmarks(bookmark).Range
'Turn off screen updating.
Application.ScreenUpdating = False
rnReport.CopyWith wdbmRange.Select.PasteSpecial link:=False, _DataType:=wdPasteRTF, _Placement:=wdFloatOverText, _DisplayAsIcon:=False
End WithSet wdbmRange = NothingWith Application.CutCopyMode = False.ScreenUpdating = True
End WithwbBook.Close '关闭打开的workbook,不然会有excel的进
End Sub

实现链接

关于VBA编辑word自动生成报告相关推荐

  1. word自动生成报告项目多页表头及页眉重复显示设置并总页码加减域代码编辑

    1.分节 不同节可以设置相同页眉页脚. 不同节也可以设置不同页眉页脚.编码(共几页第几页). 不同节不会显示在同一页(第一节的内容由一页变成二页时,不会和第二节的内容同时显示在第二页). 同一节多页时 ...

  2. python 用word模板自动生成报告

    不啰嗦,直接进入正题,先放上结果: 利用下面的模板自动生成报告篇: 注:后面会详细讲解如何生成模板. 如何生成模板: 新建一个 docx 文件. 2.代码部分 import tushare as ts ...

  3. 如何使用word自动生成目录?

    要写毕业论文了,可是尴尬的是自己对word的理解,也只停留在手动码字的阶段,今天开始,学一学有关word的相关技巧,有助于论文的高效写作,以及以后工作文档的写作效率. 写给出成果显示: 1.设置章节样 ...

  4. 如何去掉word自动生成目录的超级链接?

    问题:整理文档时,想把word自动生成的目录拷贝到一个单独的文件,结果拷贝出来时的目录在打印预览时页码处总是"错误" 原因:拷贝出来的目录带超级链接的缘故 解决办法:全选目录,按Ctrl+Shift+ ...

  5. word自动生成目录左对齐(缩进)问题

    word自动生成目录左对齐(缩进)问题 环境:office2010: 问题:概述:目录中一二级标题全都是左对齐,如图1.而我需要的是二.三级目录缩进.   详述:我在正文中用样式表设定了标题的样式,一 ...

  6. word自动生成目录 页码不能右对齐问题

    在用word自动生成目录时,产生的目录总是不能右对齐,如下图 这时可以再生成目录对话框中修改相关选项来更正这个错误. 在引用->目录->插入目录的对话框中,<常规>--< ...

  7. Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告

    Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告 Polyworks中,3D场景的视图可用标准视角及等轴侧视角.项目视角等方式调用,也可以用txt格式保存下来调用,如果以脚本的形 ...

  8. 菜鸟学习四种制作Word自动生成目录的方法!

    Word给我们办公带来了不少方便,相信大家也是非常熟悉不过了.但是你确定在Word里面所有功能你都会使用吗?相信就算经常与Word打交道的高手也不会说是.今天Word联盟就为大家介绍五种制作Word自 ...

  9. win10系统word自动生成的目录变成乱码了怎么解决

    描述:win10系统word自动生成的目录变成乱码了怎么解决 步骤: 按下alt+f9就可以恢复正常的目录

最新文章

  1. android版记账本
  2. 【SpringBoot】使用Maven添加jQuery、bootstrap等依赖(WebJars)
  3. 第十章数据库恢复技术
  4. 线上系统因为一个ThreadLocal直接内存飙升
  5. 好吧,如果一定要RESTFUL的DJANGO
  6. Spring注解之@Import用法解析
  7. PAT1003. 我要通过!
  8. 使用Swagger辅助开发Fabric Application的Web API
  9. DE15 Introduction to Fourier Series
  10. python识别收件地址_Python3 自动识别地址信息
  11. 数据结构与算法C语言版—— 数据结构的详细介绍
  12. 张掖百公里,再次折戟
  13. ubuntu下安装小企鹅输入法
  14. VS2008 水晶报表部署
  15. 微信加密某一个人私聊?微信私密聊天
  16. 《CSS世界》读书笔记:line-height
  17. Bazel5.0.0源码安装报错:no matching function for call to ‘StrFormat(const char [28], const char*)’
  18. FPGA开发工具套餐搭配推荐及软件链接 (更新于2020.03.16)
  19. JAVA Set 交集,差集,并集
  20. [转载]--令人拍案叫绝的Wasserstein GAN

热门文章

  1. 【UTF-8编码透析】神奇的“联通”乱码现象
  2. 如何安装开源 RPA 工具 Robocorp
  3. 要求提供上一家公司的工资流水,有人有些不解,这是为啥
  4. 花栗鼠科技大学的计算机组成原理实验最终的结课考核方式是提交一份报告。然而作为任课老师,萝老师不希望大家过于内卷,所以指定了如下规定:每份报告有一个卷面基础分 在此基础上:若是报告字数低于
  5. Java 14 GA 版本正式发布
  6. 不装Raysource照样下载
  7. Android监控外接USB设备和获取USB等设备的详细信息
  8. linux挂载SD卡
  9. win7删除计算机管理员权限,win7如何删除需要管理员权限的文件夹
  10. vue两个按钮切换_vue实现按钮切换图片