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

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

示例文档如下所示。

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

示例代码如下。

vb 复制代码
Sub SearchTab()
    Application.DefaultTableSeparator = "*"
    Selection.HomeKey unit:=wdStory
    With Selection.Find
        .Text = "@@@"
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchAllWordForms = False
        Do While .Execute
            With Selection
                .Delete
                .Expand wdParagraph
                .Font.Italic = True
                .Range.Font.TextColor.RGB = RGB(97, 146, 0)
                .MoveDown unit:=wdParagraph
                .MoveDown unit:=wdParagraph, Count:=6, Extend:=wdExtend
                Call textToTable
                .Collapse wdCollapseEnd
            End With
        Loop
    End 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行代码将选区折叠到当前段落的末尾,准备开始查找下一个匹配项。

vb 复制代码
Sub textToTable()
    Dim tempString As String, i As Integer
    Selection.ConvertToTable Separator:=wdSeparateByDefaultListSeparator, _
        NumColumns:=5, NumRows:=6, AutoFitBehavior:=wdAutoFitFixed
    With Selection.Tables(1)
        .Style = "Table Grid"
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        For i = 1 To .Rows.Count
            If i > 2 Then .Rows(i).Cells.Merge
            If 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 = True
            End If
        Next
    End 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行代码设置字体设置为加粗。
相关推荐
E_ICEBLUE7 小时前
Python 实现 Markdown 转 Word、PDF:从转换到页面设置
python·pdf·word·markdown·格式转换
DS随心转小程序1 天前
Gemini只能导出了一部分Word文档,很少的一部分,不是我这个窗口所有的对话内容?
开发语言·人工智能·c#·word·豆包·deepseek·ai导出鸭
DS随心转APP1 天前
【 AI做的表格怎么导出 】?AI 导出鸭让数据流转回归优雅
人工智能·chatgpt·数据挖掘·回归·word·ai导出鸭
Am-Chestnuts1 天前
DeepSeek 回答怎么保存成 PDF?用DS随心转把对话导出为可打印文档
pdf·word
一晌小贪欢1 天前
Python办公18:PDF 转 Word——利用 OCR 技术批量提取不可编辑的文档内容
开发语言·python·pdf·word·excel·数据可视化·python办公
yuhulkjv3352 天前
告别复制粘贴式降级:纳米AI鸿蒙版导出word格式为何绕不开“AI 导出鸭”
人工智能·ai·word·harmonyos·ai导出鸭
DS随心转APP2 天前
AI导出鸭插件 如何解决这些痛点,以及它如何重构“批量导出”这件事,让 纳米AI导出Excel 和其他格式告别手动整理,让AI导出回归优雅。
人工智能·重构·word·excel·deepseek·ai导出鸭
ThsPool2 天前
从 Word 数据标准中自动提取字段表:一套可配置的 Markdown 整理方案
word
lskblog2 天前
Ubuntu 18.04 安装 LibreOffice(用于 Word 在线预览转换)
java·linux·python·ubuntu·word·php·laravel
show4333 天前
2026多格式导出技术方案:小程序端免费TXT/Word/SRT生成实践
小程序·word