ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教大家如何在WORD文档中查找指定字符并返回行数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-9-25 17:50 | 显示全部楼层 |阅读模式
请教大家,如何在WORD文档中查找指定字符并返回查到的第一个所在的行数?非常谢谢大家!

TA的精华主题

TA的得分主题

发表于 2011-9-25 23:37 | 显示全部楼层
网络得来,非我原创,代码如下:
' 显示页数
    Dim s As String
    With Selection
        s = "第" & .Information(wdActiveEndPageNumber) & "页"
        s = s & "共" & .Information(wdNumberOfPagesInDocument) & "页"
        s = s & "(第" & .Information(wdFirstCharacterLineNumber) & "行"
        s = s & "第" & .Information(wdFirstCharacterColumnNumber) & "列)"
        MsgBox s
    End With

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-26 08:14 | 显示全部楼层
413191246se 发表于 2011-9-25 23:37
网络得来,非我原创,代码如下:
' 显示页数
    Dim s As String

感谢你的回答,可是你答复的是选择字符所在的行列页,我要的是查找的字符所在的行。如何得到呢?期待大家的指教。谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-26 08:52 | 显示全部楼层
试验成功了,但只能显示在某一页的第几行,而不是在全文中的第几页,代码如下:
Private Sub CommandButton2_Click()
' a = Int(Rnd * 4) + 1

a = 5
  Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "选第" & a & "题" '这里放进通配符
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWildcards = True
    End With
    Selection.Find.Execute
   
  Selection.Find.Execute
j = Selection.Range.Information(wdFirstCharacterLineNumber)

    MsgBox "查到字符串:" & Selection.Range & j

End Sub

TA的精华主题

TA的得分主题

发表于 2011-9-26 09:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 413191246se 于 2011-9-26 09:03 编辑

    我也是刚刚入门儿!我自从6、7月才初步编辑一下宏,以前根本不懂的;以前只是会录制一下。有本论坛 tangqingfu 大侠 编辑的《WORD查找与替换集成》的文档,你找找,借鉴一下。另外,你这个宏名或曰项目到底叫什么呢?——比如说,“删除段首空格”宏,“删除空行”宏,你的宏叫什么名字呢?说清楚宏名,大家就知道怎么帮你了。

TA的精华主题

TA的得分主题

发表于 2011-9-26 10:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub Example3()
Dim i As Integer
Dim yaozhaodeci As String
yaozhaodeci = "卡扎菲"
Selection.HomeKey unit:=wdStory
Selection.EndKey unit:=wdLine, Extend:=wdExtend
For i = 1 To ActiveDocument.BuiltInDocumentProperties(wdPropertyLines).Value
If InStr(Selection.Range, yaozhaodeci) <> 0 Then
MsgBox yaozhaodeci & "在第" & i & "行。"
Exit Sub
Else
Selection.MoveEnd unit:=wdCharacter, Count:=1
Selection.EndKey unit:=wdLine, Extend:=wdExtend
End If
Next
End Sub

TA的精华主题

TA的得分主题

发表于 2011-9-26 12:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 sqhsqhli 于 2011-9-26 13:03 编辑

追加:如果知道每行不超过30字符。这样是不是可以加快速度?
on error resume next

If InStr(right(Selection.Range,30), yaozhaodeci) <> 0 Then

答案是肯定的,但仍不明显。

TA的精华主题

TA的得分主题

发表于 2011-9-26 13:15 | 显示全部楼层
这下搞定了



Sub Example3()
On Error Resume Next
Dim i As Integer
Dim yaozhaodeci As String
Dim a
a = Timer
yaozhaodeci = "卡扎菲"
Selection.HomeKey unit:=wdStory
Selection.EndKey unit:=wdLine, Extend:=wdExtend
For i = 1 To ActiveDocument.BuiltInDocumentProperties(wdPropertyLines).Value
With Selection.Find
.Text = yaozhaodeci
If .Execute = True Then
MsgBox yaozhaodeci & "在第" & i & "行。耗时" & Timer - a
Exit Sub
Else
Selection.MoveEnd unit:=wdLine, Count:=1
End If
End With
Next
Selection.HomeKey unit:=wdStory
End Sub

TA的精华主题

TA的得分主题

发表于 2011-9-27 10:36 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-6-21 13:07 | 显示全部楼层
sqhsqhli 发表于 2011-9-26 10:10
Sub Example3()
Dim i As Integer
Dim yaozhaodeci As String
  1. Sub Macro1()

  2. Dim mypath$, wj$, n%, wd, i&, k%

  3. Set wd = CreateObject("Word.Application")

  4. w = Array("合同编号:", "出租方(以下简称甲方):", "联系电话:", "地址:", "承租方(以下简称乙方):", "第一条 场地基本情况", "用途", "第三条 租赁期限")

  5. mypath = ThisWorkbook.Path & ""

  6. wj = Dir(mypath & "*.doc")

  7. Do While wj <> ""

  8. on error resume next

  9.     n = n + 1

  10.     With wd.Documents.Open(mypath & wj)

  11.         x = Split(.Range, vbCr)

  12.         For i = 0 To UBound(x) - 1

  13.             For k = 0 To 4

  14.                 If x(i) Like "*" & w(k) & "*" Then

  15.                     Cells(n + 1, k + 1) = Split(x(i), w(k))(1)

  16.                 End If

  17.             Next

  18.             If x(i) Like "*" & w(5) & "*" Then

  19.                 Cells(n + 1, 6) = Split(Split(x(i + 1), "位于")(1), ";")(0)

  20.                 Cells(n + 1, 7) = Split(Split(x(i + 1), "建筑面积")(1), "平方")(0)

  21.             End If

  22.             If x(i) Like "*" & w(6) & "*" Then

  23.                 Cells(n + 1, 9) = x(i + 1)

  24.             End If

  25.             If x(i) Like "*" & w(7) & "*" Then

  26.                 Cells(n + 1, 10) = Split(Split(x(i + 1), "租赁期限")(1), ",")(0)

  27.                 Cells(n + 1, 11) = Split(Split(x(i + 1), "自")(1), "至")(0)

  28.                 Cells(n + 1, 12) = Split(Split(x(i + 1), "至")(1), "止")(0)

  29.             End If

  30.         Next

  31.         .Close False

  32.     End With

  33.     wj = Dir

  34. Loop

  35. wd.Quit

  36. End Sub
复制代码


老师这是个批量查找指定字符并填写到EXCEL中的代码  是根据段落查找的
但是格式不是很统一  能不能用什么办法修改成全文查找的吗
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 16:54 , Processed in 0.023723 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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