ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 在另一个文档中查找某字符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-19 16:06 | 显示全部楼层 |阅读模式
各位老师,本人对word vb完全不懂,请老师们帮我看看附件中的这一查找如何写代码,谢谢!

两个word之间查找文字.rar

15.05 KB, 下载次数: 24

TA的精华主题

TA的得分主题

发表于 2015-10-19 20:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主未写明会不会用宏?给你一个宏,会用不?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-20 10:24 | 显示全部楼层
谢谢楼上的关心,我会用宏,偶尔用excel宏编点小程序,对word宏真是陌生,请帮助我,谢谢!

TA的精华主题

TA的得分主题

发表于 2015-10-21 17:02 | 显示全部楼层
楼主,请同时打开如你附件中的两个WORD文档,文件名不要改变,然后执行下面的宏:(此宏放到 Normal.dot中即可,如你要求的放到文档中,我不大会,也不喜欢,你随便录制一个宏,如 Macro1,然后在《工具》菜单---宏----宏-----中找到它,编辑之,再在它下面拷贝下面的宏即可)
Sub 查找入声字()
    Dim i As String, j As Long
    Windows("待验诗词").Activate
    Selection.EndKey unit:=wdStory
    Selection.TypeText Text:="`"
    Selection.HomeKey unit:=wdStory
    Do
        Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend
        i = Selection.Text
        If i Like "[。,;:!]" Then GoTo skip
        Windows("常用入声字歌诀").Activate
        Selection.HomeKey unit:=wdStory
        Selection.ClearFormatting
        Selection.Find.Execute findtext:=i
        If Selection.Find.Found = True Then j = 1 Else j = 0
        Windows("待验诗词").Activate
        If j = 1 Then Selection.Font.Color = wdColorRed: Selection.Font.Bold = True
skip:
        Selection.MoveRight unit:=wdCharacter, Count:=1
    Loop Until Selection.Text = "`"
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-23 19:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常感谢老师,这几天用账号登录不了,迟迟不能上来道谢,见谅!
另外,如果能在后台打开常用入声字歌诀,验证完以后在后台自动关闭,这样更方便,我试了几次都没有成功。如何才能实现?

TA的精华主题

TA的得分主题

发表于 2015-10-23 20:36 | 显示全部楼层
楼主,你好!请在最后一句 End Sub 上面一行添加:
Windows("常用入声字歌诀").Close

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-23 22:06 | 显示全部楼层
谢谢
你程序里的设计: Windows("常用入声字歌诀").Activate是在打开状态后激活这一文档。
我想让程序在后台自动打开常用入声字歌诀.doc这个文件,免得每次手动打开。

TA的精华主题

TA的得分主题

发表于 2015-10-24 12:36 | 显示全部楼层
楼主,这回再试试!(注意——代码中假设把《歌诀》这个文档放在了 d:\我的文档 文件夹中了,如果不同,你自己修改一下吧!另外,这个文档要永久放在一处,不要改变才能反复用此代码!)
Sub aaa查找入声字()
    ActiveDocument.SaveAs FileName:=ActiveDocument.Path & "\" & Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4) & "_入声" & ".doc" '创建副本
    Dim i As String, j As Long, a As String, b As String, c As String, e As Long
    a = ActiveDocument.FullName
    b = "d:\我的文档\常用入声字歌诀.doc" '歌诀完整文件名(如果路径不同,请自行修改!只此一处!)
    Documents.Open FileName:=b
    e = InStrRev(b, "\")
    c = Mid(b, e + 1)
    c = Left(c, Len(c) - 4)
    Windows(a).Activate
    Selection.EndKey unit:=wdStory
    Selection.TypeText Text:="`"
    Selection.HomeKey unit:=wdStory
    Do
        Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend
        i = Selection.Text
        If i Like "[。,;:!]" Then GoTo skip
        Windows(c).Activate
        Selection.HomeKey unit:=wdStory
        Selection.ClearFormatting
        Selection.Find.Execute findtext:=i
        If Selection.Find.Found = True Then j = 1 Else j = 0
        Windows(a).Activate
        If j = 1 Then Selection.Font.Color = wdColorRed: Selection.Font.Bold = True
skip:
        Selection.MoveRight unit:=wdCharacter, Count:=1
    Loop Until Selection.Text = "`"
    Windows(c).Close savechanges:=wdDoNotSaveChanges
    ActiveDocument.Characters.Last.Previous.Delete
    ActiveDocument.Close savechanges:=wdSaveChanges
    Documents.Open FileName:=a
    MsgBox "处理完毕!当前文档已经保存!", vbOKOnly + vbExclamation, "查找入声字"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-1 20:14 | 显示全部楼层
老师您好,这几天忙没有上来。
感谢你重新编写了,我希望直接在待验的这个文件中做标红标记,不要另存副本。

第二:我按您的公式调试,发现   Windows(c).Activate这一语句出问题,说集合成员不存在。
请您再看看。谢谢!

TA的精华主题

TA的得分主题

发表于 2015-11-2 11:55 | 显示全部楼层
楼主,请你确认一下你的《歌诀》文件,是在 C:\My Documents\ 文件夹还是 C:\我的文档\ 文件夹,请自行修改第 5 行代码路径:
  1. Sub aaa查找入声字()
  2.     On Error Resume Next
  3.     Dim i As String, j As Long, oldName As String, docName As String, chkName As String
  4.     oldName = ActiveDocument.FullName
  5.     docName = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4)
  6.     Documents.Open FileName:="C:\My Documents\常用入声字歌诀.doc"
  7.     chkName = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4)
  8.     Documents(docName).Activate
  9.     Selection.EndKey unit:=wdStory
  10.     Selection.TypeText Text:="`"
  11.     Selection.HomeKey unit:=wdStory
  12.     Do
  13.         Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend
  14.         i = Selection.Text
  15.         If i Like "[。,;:!]" Then GoTo skip
  16.         Documents(chkName).Activate
  17.         Selection.HomeKey unit:=wdStory
  18.         Selection.ClearFormatting
  19.         Selection.Find.Execute findtext:=i
  20.         If Selection.Find.Found = True Then j = 1 Else j = 0
  21.         Documents(docName).Activate
  22.         If j = 1 Then Selection.Font.Color = wdColorRed: Selection.Font.Bold = True
  23. skip:
  24.         Selection.MoveRight unit:=wdCharacter, Count:=1
  25.     Loop Until Selection.Text = "`"
  26.     Documents(chkName).Close savechanges:=wdDoNotSaveChanges
  27.     ActiveDocument.Characters.Last.Previous.Delete
  28.     ActiveDocument.Close savechanges:=wdSaveChanges
  29.     Documents.Open FileName:=oldName
  30.     MsgBox "处理完毕!当前文档已经保存!", vbOKOnly + vbExclamation, "查找入声字"
  31. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-15 18:27 , Processed in 0.023927 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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