ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 373|回复: 8

如何用vba代码在文末统计字数?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-22 16:20 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zzpsx 于 2024-3-22 16:25 编辑

image.png
附件.zip (15.16 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2024-3-22 16:32 | 显示全部楼层
    Dim 文档字数0, 文档字数1 As Long
    Dim 总页数0, 总页数1 As Integer

    '文档所有文档字数和页面统计
    文档字数0 = ActiveDocument.ComputeStatistics(wdStatisticWords)
    总页数0 = ActiveDocument.ComputeStatistics(wdStatisticPages)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-22 16:38 来自手机 | 显示全部楼层
插入域法: 按快捷键Ctrl+F9,在灰块中输入numwords,再按F9,出现的数字就是这篇文章的总字数,并且这个数字是变化的(选中全文后按F9键就更新),这对于将文章字数作为文章一部分的应用是比较有用的,它可使结果动态更新、不用每次修改文章后再去修改字数。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-23 01:48 | 显示全部楼层
* 楼主,请注意:请复制代码到新建空白文档后,全选,剪切,再粘贴到 VBE 中。
* 首次使用请按 Alt + F8 找到本宏,运行之(在第一位);下次再用直接按 F3 键即可。
  1. Sub a0_DocWords()
  2.     KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyF3), KeyCategory:=wdKeyCategoryMacro, Command:="a0_DocWords"
  3.     ActiveDocument.Content.InsertAfter Text:=vbCr & "(本文一共" & ActiveDocument.ComputeStatistics(wdStatisticWords) & "个字)"
  4.     ActiveDocument.Paragraphs.Last.Range.ParagraphFormat.Alignment = wdAlignParagraphRight
  5. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-23 20:47 | 显示全部楼层
谢谢各位高手,我在你们的代码基础上进行了修改,结果如下:

Sub 统计word字数页数()
    Dim 文档字数 As Long
    Dim 总页数 As Integer
    ' 检查是否至少有一个文档打开
    If ActiveDocument Is Nothing Then
        MsgBox "没有打开的文档。", vbExclamation, "错误"
        Exit Sub
    End If
    ' 获取当前文档的字数和页数统计
    文档字数 = ActiveDocument.ComputeStatistics(wdStatisticWords)
    总页数 = ActiveDocument.ComputeStatistics(wdStatisticPages)
    ' 在文档末尾插入统计信息
    With ActiveDocument.content
        .InsertAfter "" & vbNewLine & _
                     "本文字数: " & 文档字数 & ", 总页数: " & 总页数
    End With
    ' 选择插入的文本,以便用户可以看到
    Selection.Range.SetRange ActiveDocument.content.End - 1, ActiveDocument.content.End
    ' 显示消息框确认统计信息已插入
End Sub
image.png

我希望的结果是这样,也就是括号内加红,如何修改代码:
image.png



TA的精华主题

TA的得分主题

发表于 2024-3-23 22:44 来自手机 | 显示全部楼层
本帖最后由 过客fppt 于 2024-3-24 07:10 编辑

Sub 你的代码()
.......你的代码的最后加

    Call 批量设置字体1("本文字数*页数:[0-3]{1,}", "仿宋", 3, True)
  
End Sub

Function 批量设置字体1(原文字, 字体为, 颜色为, 通配符, Optional ByVal 加粗 As Boolean = False)
    Dim rng As Range
    Set rng = IIf(Len(Selection.Range.text) <= 1, ActiveDocument.Content, Selection.Range)
    With rng.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .text = 原文字
        .Forward = True
        .MatchWildcards = 通配符 '通配符开关
        With .Replacement
            .Font.Name = 字体为
            .Font.Name = "Times New Roman"
            .Font.ColorIndex = 颜色为 'wdDarkRed
            .Font.Bold = 加粗
        End With
    End With
    rng.Find.Execute Replace:=wdReplaceAll
    批量设置字体1 = rng.Find.Found
    Set rng = Nothing
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-24 08:09 | 显示全部楼层
谢谢各位,我自己也又写了一个:
Sub CountWordsAndPages()
    Dim wdDoc As Document
    Dim wdSelection As Selection
    Dim strText As String
    Dim intWords As Integer
    Dim intPages As Integer
   
    ' 获取当前文档对象
    Set wdDoc = ActiveDocument
    ' 获取当前选定内容对象
    Set wdSelection = wdDoc.ActiveWindow.Selection
   
    ' 获取文档的字数
    intWords = wdDoc.ComputeStatistics(wdStatisticWords)
    ' 获取文档的页数
    intPages = wdDoc.BuiltInDocumentProperties(wdPropertyPages)
   
    ' 构造统计结果字符串
    strText = "(本文档共" & intWords & "字,共" & intPages & "页)"
   
    ' 将光标移动到文档末尾
    wdSelection.EndKey Unit:=wdStory
    ' 插入换行符
    wdSelection.InsertBreak Type:=wdLineBreak
   
    ' 插入统计结果字符串
    wdSelection.Text = strText
    ' 设置字体颜色为红色
    wdSelection.Font.Color = wdColorRed
   
    ' 清理对象
    Set wdSelection = Nothing
    Set wdDoc = Nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2024-3-24 22:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
过客fppt 发表于 2024-3-23 22:44
Sub 你的代码()
.......你的代码的最后加

您这个思路好!下面的附件中,有各种字体,能不能把“整行全是仿宋体字的行”提出来另外存放?谢谢!

仿宋体.zip

11.38 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2024-3-24 23:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 01:09 , Processed in 0.050633 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表