【Word】批注一键导出:VBA 宏

news2025/4/4 5:41:27

📌 VBA 宏代码实现

下面是完整的 VBA 代码,支持:

  • 自动创建新文档,并将当前 Word 文档的所有批注导出。
  • 批注格式清晰,包括编号、作者、日期和批注内容。
  • 智能检测,如果当前文档没有批注,则提示用户并终止导出。
  • 自定义保存路径,通过对话框选择导出文件位置。

若想详细引用到某段,参见链接地址文章

代码均成功实现效果

💡 代码

Sub ExportComments()
    Dim doc As Document
    Dim comment As Comment
    Dim exportDoc As Document
    Dim i As Integer
    Dim savePath As String
    
    ' 设置当前文档
    Set doc = ActiveDocument
    
    ' 如果文档没有批注,则提示用户并退出
    If doc.Comments.Count = 0 Then
        MsgBox "当前文档没有批注,无需导出。", vbInformation, "提示"
        Exit Sub
    End If
    
    ' 让用户选择保存路径
    With Application.FileDialog(msoFileDialogSaveAs)
        .Title = "选择导出文件保存位置"
        .FilterIndex = 1
        .InitialFileName = "批注导出.docx"
        If .Show = -1 Then
            savePath = .SelectedItems(1)
        Else
            Exit Sub ' 如果用户取消,则退出
        End If
    End With

    ' 创建新文档
    Set exportDoc = Documents.Add
    exportDoc.Content.Text = "文档批注导出" & vbCrLf & vbCrLf
    
    ' 遍历所有批注
    For i = 1 To doc.Comments.Count
        Set comment = doc.Comments(i)
        
        With exportDoc.Content
            .InsertAfter "批注 #" & i & vbCrLf
            .InsertAfter "作者: " & comment.Author & vbCrLf
            .InsertAfter "日期: " & comment.Date & vbCrLf
            .InsertAfter "内容: " & comment.Range.Text & vbCrLf & vbCrLf
        End With
    Next i
    
    ' 保存导出文档
    exportDoc.SaveAs2 savePath
    exportDoc.Close
    
    MsgBox "批注导出完成!", vbInformation, "完成"
End Sub

📖 代码解析

  1. 判断当前文档是否有批注

    If doc.Comments.Count = 0 Then
        MsgBox "当前文档没有批注,无需导出。", vbInformation, "提示"
        Exit Sub
    End If
    

    这一部分检查当前文档是否有批注,如果没有,则弹出提示并退出,避免创建空的导出文件。

  2. 让用户选择保存路径

    With Application.FileDialog(msoFileDialogSaveAs)
        .Title = "选择导出文件保存位置"
        .InitialFileName = "批注导出.docx"
        If .Show = -1 Then
            savePath = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    

    这段代码使用 FileDialog 让用户自由选择保存位置,而不是将文件强制保存在默认目录。

  3. 批注导出格式

    .InsertAfter "批注 #" & i & vbCrLf
    .InsertAfter "作者: " & comment.Author & vbCrLf
    .InsertAfter "日期: " & comment.Date & vbCrLf
    .InsertAfter "内容: " & comment.Range.Text & vbCrLf & vbCrLf
    

    每个批注导出的格式如下:

    批注 #1
    作者: 张三
    日期: 2024/04/01
    内容: 请修改此部分的措辞。
    

    这样可以清晰地记录每个批注的信息。


📌 如何使用 VBA 宏

如果你是 VBA 新手,不用担心,按照以下步骤即可轻松运行此宏:

1️⃣ 启用 VBA 开发环境

  1. 打开 Word,按 Alt + F11 进入 VBA 编辑器
  2. VBAProject (当前文档) 下,点击 插入 > 模块

2️⃣ 复制代码

将上面的 VBA 代码粘贴到新模块中。

3️⃣ 运行宏

F5 或点击 运行 按钮,Word 将自动执行批注导出操作。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LINUX 1

快照 克隆:关机状态下:长时间备份 uname 操作系统 -a 获取所有信息 绝对路径 相对路径 -a -l 列表形式查看 -h 查看版本 相对路径这个还没太搞懂 LS -L LL 简写 显示当前路径 pwd cd 切换到目录 clear 清屏 reboot 重启操作系统

高效定位 Go 应用问题:Go 可观测性功能深度解析

作者:古琦 背景 自 2024 年 6 月 26 日,阿里云 ARMS 团队正式推出面向 Go 应用的可观测性监控功能以来,我们与程序语言及编译器团队携手并进,持续深耕技术优化与功能拓展。这一创新性的解决方案旨在为开发者提供更为全面、深入且…

【Windows】win10系统安装.NET Framework 3.5(包括.NET 2.0和3.0)失败 错误代码:0×80240438

一、.NET3.5(包括.NET 2.0和3.0)安装方式 1.1 联网安装(需要联网,能访问微软,简单,很可能会失败) 1.2 离线安装-救急用(需要操作系统iso镜像文件,复杂,成功几率大) 二、联网安装 通过【控制面板】→【程序】→【程序和功能】→【启用或关闭Windows功能】 下载过程…

蓝桥杯训练士兵

思路:其实每次就是要比较士兵单独训练的价格之和SUM与S的大小,如果 SUM大,那么就减去所有士兵都要训练的次数的最小值,SUM再更新一下,继续比较。 先对士兵的次数按从小到大的次序排序(很重要)&…

循环神经网络 - 简单循环网络

本文我们来学习和了解简单循环网络(Simple Recurrent Network,SRN), SRN是一个非常简单的循环神经网络,只有一个隐藏层的神经网络。 简单循环神经网络,也常称为 Elman 网络,是最基本的循环神经网络(RNN&am…

Linux 企业项目服务器组建(附脚本)

一、架构概述​ 本方案旨在为企业搭建一套高效、安全的 Linux 服务器架构,包含一台 DNS 服务器,以及一台同时承载 FTP 和 Samba 服务的服务器,满足公司在域名解析、图片存储与共享、文件共享等方面的业务需求。​ 二、服务器部署​ DNS 服…

⼆、Kafka客户端消息流转流程

这⼀章节将重点介绍Kafka的HighLevel API使⽤,并通过这些API,构建起Kafka整个消息发送以及消费的主线流程。 Kafka提供了两套客户端API,HighLevel API和LowLevel API。 HighLevel API封装了kafka的运⾏细节,使⽤起来⽐较简单&…

es 3期 第28节-深入掌握集群组建与集群设置

#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性&#xff…

如何在 SwiftUI 视图中使用分页(Paging)机制显示 SwiftData 数据(三)

概述 小伙伴们都知道,自从有了 SwiftData 的加持,现在 SwiftUI 可以非常惬意的利用描述型命令创建以数据驱动为本的视图了。这在测试或演示小项目中工作的完美无缺,不过真实世界要“残酷”的多。 实际情况是,我们无法一次性将海量数据统统拉入内存以便在 SwiftUI 中显示,…

git和VScode

游戏存档保存的是游戏的进度 git保存的是代码的进度 Vscode和git 要正常的使用git首先要设置姓名和邮箱 要配合gitee(也可以是其他平台,以gitee举例)使用,首先创造一个gitee账号,复制邮箱和用户名 在VScode中找到…

利用Canvas在紫微斗数命盘上画出三方四正

许多紫微斗数排盘程序都会在命盘上画出三方四正的指示线&#xff0c;便于观察命盘。本文用Canvas在一个模拟命盘上画出三方四正指示线。 模拟命盘并画出“子”宫三方四正的HTML文件如下&#xff1a; <!doctype html> <html lang"en"> <head><…

传统汽车 HMI 设计 VS 新能源汽车 HMI 设计,有何不同?

一、设计理念与目标的差异 传统汽车HMI设计的核心目标是辅助驾驶&#xff0c;强调功能的简洁性和操作的便捷性。其设计侧重于提供基础的车辆信息&#xff08;如车速、转速、油量等&#xff09;&#xff0c;并确保驾驶员在操作时能够快速获取关键信息。相比之下&#xff0c;新能…

【JavaWeb】前端基础

JavaWeb 前端三大件&#xff1a;HTML&#xff08;主要用于网页主体结构的搭建&#xff09;&#xff0c;CSS&#xff08;页面美化&#xff09;&#xff0c;JavaScript&#xff08;主要用于页面元素的动态代理&#xff09; 1. HTML 1.1 html概述 HTML&#xff1a;Hyper Text …

SpringMVC组件解析

SpringMVC的执行流程 ① 用户发送请求至前端控制器DispatcherServlet。 ② DispatcherServlet收到请求调用HandlerMapping处理器映射器 ③ 处理器映射器找到具体的处理器(可以根据xm|配置、注解进行査找)&#xff0c;生成处理器对象及处理器 拦截器(如果有则生成)一…

数据结构C语言练习(两个栈实现队列)

一、引言 在数据结构的学习中&#xff0c;我们经常会遇到一些有趣的问题&#xff0c;比如如何用一种数据结构去实现另一种数据结构的功能。本文将深入探讨 “用栈实现队列” 这一经典问题&#xff0c;详细解析解题思路、代码实现以及每个函数的作用&#xff0c;帮助读者更好地…

nextjs使用02

并行路由 同一个页面&#xff0c;放多个路由&#xff0c;&#xff0c; 目录前面加,layout中可以当作插槽引入 import React from "react";function layout({children,notifications,user}:{children:React.ReactNode,notifications:React.ReactNode,user:React.Re…

第2.6节 iOS生成全量和增量报告

2.6.1 简介 在采集了覆盖率数据后&#xff0c;就需要生成对应需求的全量和增量覆盖率报告&#xff0c;以便对测试进行查漏补缺。IOS系统有两种开发语言&#xff0c;所以生成报告的方式也不相同&#xff0c;下面就分别介绍一下Object C和Swift语言如何生成覆盖率报告。 2.6.2 O…

应用分享 | AWG技术突破:操控钻石氮空位色心,开启量子计算新篇章!

利用AWG操作钻石中的氮空位色彩中心 金刚石中的颜色中心是晶格中的缺陷&#xff0c;其中碳原子被不同种类的原子取代&#xff0c;而相邻的晶格位点则是空的。由于色心具有明亮的单光子发射和光学可触及的自旋&#xff0c;因此有望成为未来量子信息处理和量子网络的固态量子发射…

【视觉与语言模型参数解耦】为什么?方案?

一些无编码器的MLLMs统一架构如Fuyu&#xff0c;直接在LLM内处理原始像素&#xff0c;消除了对外部视觉模型的依赖。但是面临视觉与语言模态冲突的挑战&#xff0c;导致训练不稳定和灾难性遗忘等问题。解决方案则是通过参数解耦方法解决模态冲突。 在多模态大语言模型&#xf…

重建二叉树(C++)

目录 1 问题描述 1.1 示例1 1.2 示例2 1.3 示例3 2 解题思路 3 代码实现 4 代码解析 4.1 初始化 4.2 递归部分 4.3 主逻辑 5 总结 1 问题描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序…