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

使用VBA快速将文本转换为Word表格

Word提供了一个强大的文本转表格的功能,结合VBA可以实现文本快速转换表格。

示例文档如下所示。

在这里插入图片描述

现在需要将上述文档内容转换为如下格式的表格,表格内容的起始标志为@@@

在这里插入图片描述

示例代码如下。

Sub SearchTab()Application.DefaultTableSeparator = "*"Selection.HomeKey unit:=wdStoryWith Selection.Find.Text = "@@@".Forward = True.Wrap = wdFindStop.Format = False.MatchAllWordForms = FalseDo While .ExecuteWith Selection.Delete.Expand wdParagraph.Font.Italic = True.Range.Font.TextColor.RGB = RGB(97, 146, 0).MoveDown unit:=wdParagraph.MoveDown unit:=wdParagraph, Count:=6, Extend:=wdExtendCall textToTable.Collapse wdCollapseEndEnd WithLoopEnd With
End Sub

【代码解析】
第2行代码设置默认表格分隔符为星号(*),这是文本转换为表格时的相关设置。
第3行代码将光标移动到文档的开头,准备进行查找操作。
第4行代码开始查找,通过Selection.Find对象定义查找条件。
第5行代码指定要查找的文本为@@@
第6行代码定义查找方向为向前。
第7行代码设置查找范围停止在文档的结尾。
第8行代码取消格式匹配选项。
第9行代码禁用同义词匹配。
第10行代码使用Do While循环查找文档中的所有符合条件的文本。
第11~18行代码对每一个找到的文本执行一系列操作。
第12行代码删除选中的查找到的文本,即起始标志@@@
第13行代码将选区扩展到整段,即表格之上的标题行。
第14行代码将整段的字体设置为斜体。
第15行代码将段落的字体颜色设置为指定的绿色。
第16~17行代码向下移动光标两个段落,并选中接下来的6个段落。
第18行代码调用textToTable子程序,将选中的文本转换为表格。
第19行代码将选区折叠到当前段落的末尾,准备开始查找下一个匹配项。

Sub textToTable()Dim tempString As String, i As IntegerSelection.ConvertToTable Separator:=wdSeparateByDefaultListSeparator, _NumColumns:=5, NumRows:=6, AutoFitBehavior:=wdAutoFitFixedWith Selection.Tables(1).Style = "Table Grid".ApplyStyleHeadingRows = True.ApplyStyleLastRow = False.ApplyStyleFirstColumn = True.ApplyStyleLastColumn = FalseFor i = 1 To .Rows.CountIf i > 2 Then .Rows(i).Cells.MergeIf Int(i / 2) <> i / 2 Then.Rows(i).Shading.Texture = wdTextureNone.Rows(i).Shading.ForegroundPatternColor = wdColorAutomatic.Rows(i).Shading.BackgroundPatternColor = -603923969.Rows(i).Range.Font.Bold = TrueEnd IfNextEnd With
End Sub

【代码解析】
第3~4行代码将选中的文本转换为表格。具体参数如下:

  • Separator:=wdSeparateByDefaultListSeparator 表示使用默认的列表分隔符进行列分隔。
  • NumColumns:=5 设置表格为5列。
  • NumRows:=6 设置表格为6行。
  • AutoFitBehavior:=wdAutoFitFixed 表示表格列宽是固定的,不自动调整。
    第5~14行代码在表格转换完成后对其样式和内容进行设置。
    第6行代码将表格样式设置为 “Table Grid”(网格样式)。
    第7行代码设置表格的标题行(第一行)应用样式。
    第8行代码设置最后一行不应用样式。
    第9行代码设置表格的第一列应用样式。
    第10行代码设置最后一列不应用样式。
    第11~19行代码通过For循环遍历表格的每一行:
    第12行代码判断当前行的行号是否大于2,如果是,则合并该行的所有单元格,如表格中第3~6行只有单个单元格。
    第13行代码判断当前行为奇数行时,将其背景设置为指定颜色,并加粗字体。
    第14行代码中 Texture = wdTextureNone 表示无纹理。
    第15行代码中 ForegroundPatternColor = wdColorAutomatic 表示前景颜色为默认值。
    第16行代码中 BackgroundPatternColor = -603923969 设置背景颜色为指定的RGB值(浅灰色)。
    第17行代码设置字体设置为加粗。
http://www.lryc.cn/news/452096.html

相关文章:

  • 力扣题解1870
  • D3.js数据可视化基础——基于Notepad++、IDEA前端开发
  • 在Robot Framework中Run Keyword If的用法
  • 虚拟机ip突然看不了了
  • LeetCode[中等] 763. 划分字母区间
  • Java LeetCode每日一题
  • 数据结构--集合框架
  • Win10鼠标总是频繁自动失去焦点-非常有效-重启之后立竿见影
  • 智能涌现|迎接智能时代,算力产业重构未来
  • 关于HTML 案例_个人简历展示01
  • 【前端开发入门】css快速入门
  • java中创建不可变集合
  • D25【 python 接口自动化学习】- python 基础之判断与循环
  • HTTP1.0和HTTP1.1有什么区别
  • 卡夫卡的理解
  • 基础算法之滑动窗口--Java实现(上)--LeetCode题解:长度最小的子数组-无重复字符的子串-最大连续1的个数III-将x减到0的最小操作数
  • Linux -- 文件系统(文件在磁盘中的存储)
  • 微服务(Microservices),服务网格(Service Mesh)以及无服务器运算Serverless简单介绍
  • 【AIGC】AI时代的数据安全:使用ChatGPT时的自查要点
  • 什么是区块链桥?
  • 机器学习框架
  • 金三银四:20道前端手写面试题
  • RAC被修改权限及相关问题
  • Golang | Leetcode Golang题解之第441题排列硬币
  • 数学建模--什么是数学建模?数学建模应该怎么准备?
  • Java项目实战II基于Java+Spring Boot+MySQL的智能物流管理系统(源码+数据库+文档)
  • 【数据分享】2000—2023年我国省市县三级逐月植被覆盖度(FVC)数值(Shp/Excel格式)
  • 《Linux从小白到高手》理论篇(十一):Linux的系统环境管理
  • Qt/C++开源控件 自定义雷达控件
  • 什么是IDE(集成开发环境)?