ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 用VBA设置WORD文档所有字母和数字字体

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-9-21 11:56 | 显示全部楼层 |阅读模式
本帖最后由 39660519 于 2016-9-21 16:45 编辑

各位老师:
    我的当前文件夹里有N个WORD文档,每个文档里有很多字母和数字,现在我想把所有文档里的字母和数字字体设置成"Times New Roman"。开始我用WORD录制宏再改写(绿色代码部分)但不成功,老师们帮我看看。后来就每个字节用正则判断,成功了,但速度超慢,老师们帮帮我

Sub 字体转换()
    Application.ScreenUpdating = False  '关平屏幕刷新
    Application.DisplayAlerts = False    '在程序执行过程中使出现的警告框不显示
    On Error Resume Next
   
    格式 = ".doc" '格式 = ".docx"
    地址 = ThisWorkbook.Path & "\"
   
    Set WORD对象 = CreateObject("Word.Application")  '后期绑定
    With WORD对象
        .Visible = True  '表格可见
        
        N = 6
        For B = 1 To N
            
            Set WORD文件 = WORD对象.Documents.Open(地址 & B & 格式)
            WORD文件.Characters(1).Select
            
            'WORD对象.Selection.Find.ClearFormatting
            'WORD对象.Selection.Find.Replacement.ClearFormatting
            'With WORD对象.Selection.Find
                '.Text = "([0-9A-Za-z]{1,})"
                '.Replacement.Text = ""
                '.Forward = True
                '.Wrap = wdFindContinue
                '.Format = True
                '.MatchCase = False
                '.MatchWholeWord = False
                '.MatchByte = True
                '.MatchWildcards = False
                '.MatchSoundsLike = False
                '.MatchAllWordForms = False
            'End With
            'Do
                'WORD对象.Selection.Find.Execute ' 下一个
                'If WORD对象.Selection.Font.Name = "宋体" Then
                    'WORD对象.Selection.Font.Name = "Times New Roman" '字体
                'Else
                    'Exit Do
                'End If
            'Loop

            
            Set 正则对象 = CreateObject("VBSCRIPT.REGEXP")
            正则对象.Global = True
            正则对象.MultiLine = True
            正则对象.IgnoreCase = True
            正则对象.Pattern = "[0-9A-Z]"
            A = WORD文件.Characters.Count
            For A1 = 1 To A
                T = WORD文件.Characters(A1).Text
                If 正则对象.Test(T) = True Then
                    WORD文件.Characters(A1).Font.Name = "Times New Roman"
                End If
            Next A1
            
            WORD文件.SaveAs Filename:=地址 & B & 格式  '另存为
            WORD文件.Close    '关闭文档
        Next B
        .Quit      '退出Word对象
    End With
   
    Application.DisplayAlerts = True     '在程序执行过程中显示警告框
    Application.ScreenUpdating = True    '打开屏幕刷新
End Sub


用VBA设置WORD文档所有字母和数字字体.rar

98.52 KB, 下载次数: 87

TA的精华主题

TA的得分主题

发表于 2016-9-21 13:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-9-21 13:36 | 显示全部楼层
请下载附件 打开“文档.docm”,点击按钮进行测试》》》》
1123.png

用VBA设置WORD文档所有字母和数字字体.rar

103.59 KB, 下载次数: 138

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-21 13:38 | 显示全部楼层
小花鹿 发表于 2016-9-21 13:00
查找替换就行吧:

谢谢小花鹿,有500多个文档,后续还会增加,一个一个太费时间,也怕漏掉

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-21 13:48 | 显示全部楼层
duquancai 发表于 2016-9-21 13:36
请下载附件 打开“文档.docm”,点击按钮进行测试》》》》

谢谢老师,我现在想用EXCEL操作修改WORD文档,代码要怎么写?

TA的精华主题

TA的得分主题

发表于 2016-9-21 13:52 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-9-21 13:53 来自手机 | 显示全部楼层
本帖最后由 duquancai 于 2016-9-21 13:55 编辑
39660519 发表于 2016-9-21 13:48
谢谢老师,我现在想用EXCEL操作修改WORD文档,代码要怎么写?

为啥非要用Excel?歧视word吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-21 13:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-9-21 13:53
为啥非要用Excel?

因为我很多数据保存在EXCEL里面,我要自动生成需要文件,因为公司统一文件格式,所以要用EXCEL,能给我你QQ吗?我发原件给你

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-21 13:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
duquancai 发表于 2016-9-21 13:52
为啥非要用Excel?

因为我很多数据保存在EXCEL里面,我要自动生成需要文件,因为公司统一文件格式,所以要用EXCEL,能给我你QQ吗?我发原件给你

TA的精华主题

TA的得分主题

发表于 2016-9-21 14:20 | 显示全部楼层
39660519 发表于 2016-9-21 13:57
因为我很多数据保存在EXCEL里面,我要自动生成需要文件,因为公司统一文件格式,所以要用EXCEL,能给我你Q ...
  1. Sub shishi()
  2.     Dim pt$, f$, wd As Object, n&, m&, wdapp As Object
  3.     Dim Arng As Object, oRang As Object, mt
  4.     Application.ScreenUpdating = False
  5.     Set wdapp = CreateObject("Word.Application")
  6.     wdapp.Visible = False
  7.     pt = ThisWorkbook.Path & ""
  8.     f = Dir(pt & "*.doc*")
  9.     Do While f <> ""
  10.         Set wd = wdapp.Documents.Open(pt & f, Visible:=False)
  11.         Set Arng = wd.Content
  12.         With CreateObject("vbscript.regexp")
  13.             .Pattern = "[a-zA-Z0-9]+"
  14.             .Global = True: .IgnoreCase = False
  15.             For Each mt In .Execute(Arng)
  16.                 m = mt.FirstIndex: n = mt.Length
  17.                 Set oRang = wd.Range(m, m + n)
  18.                 oRang.Font.Name = "Times New Roman"
  19.             Next
  20.         End With
  21.         wd.Close True
  22.         f = Dir
  23.     Loop
  24.     wdapp.Quit
  25.     MsgBox "操作完毕!"
  26.     Application.ScreenUpdating = True
  27. End Sub
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 06:58 , Processed in 0.047754 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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