| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9248 人关注过本帖
标题:如何通过VB将光标移到WORD文档中指定字符的后面
只看楼主 加入收藏
xfwxian
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-11-16
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:13 
如何通过VB将光标移到WORD文档中指定字符的后面
有一WORD文档,里面有“姓名:张三”的内容,该内容所在位置不清楚,张三只是一个通用姓名,并不固定,如何通过VB将“姓名:”后面的“张三”等姓名赋值给一个变量?
搜索更多相关主题的帖子: 如何 通用 姓名 
2016-11-16 21:13
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:20 
题主可否提供你读取word文档代码及部分word文档,这样会有针对性的帮你解决问题(提取文字必须知道分隔符的规律)。
2016-11-18 11:02
xfwxian
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-11-16
收藏
得分:0 
回复 4楼 xzlxzlxzl
没有任何的规律,其实就是要找出“姓名:”后面三个字符,并将其赋值给一变量。
2016-11-18 15:36
xfwxian
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-11-16
收藏
得分:0 
回复 5楼 xfwxian
我考虑先定位到“姓名:”后面,然后复制后面三个字符,将其赋值,就是不知道如何定位。
2016-11-18 15:41
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
你现在做了哪些工作?把代码发上来别人才能帮你。
2016-11-18 19:20
xfwxian
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-11-16
收藏
得分:0 
回复 5楼 xzlxzlxzl
With oApp.Documents.Open("D:\2016年\化验单.doc)
Set myRange1 = oApp.ActiveDocument.Range(Start:=17, End:=20)
Set myRange2 = oApp.ActiveDocument.Range(Start:=30, End:=32)
Set myRange3 = oApp.ActiveDocument.Range(Start:=71, End:=80)
Set myRange4 = oApp.ActiveDocument.Range(Start:=95, End:=100)
end with

以上代码是将化验单上的姓名、年龄、送检日期、临床诊断后面的值分别赋值给myRange1、myRange2、myRange3、myRange4,我采用的是机械的定位,可是化验单上的内容所在的位置并不完全固定,所以出来的结果不准确,有的截取了前面的,有的截取了后面的,当然有的截取的是正确的。该代码运行正常,就是截取的字符不准确。
2016-11-20 07:52
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
不知道你的化验单具体内容,自己随便弄个word文档试验,可以达到获取姓名,试验word内容如下:
化验单
似懂非懂三 姓名:张三三 玩儿发送到舒服个电饭锅电饭锅 姓名:李四四
热帖有任何热通过 姓名:王五五
梵蒂冈地方姓名:赵六六 水电费广东省 姓名:张七七


程序代码:
  Dim a As String, p As Integer, oApp As Word.Application, myRange1 As Word.Range, myRange2 As Word.Range, myRange3 As Word.Range
  Set oApp = CreateObject("Word.Application")
  oApp.Documents.Open "e:\化验单.doc"
  p = 0
  a = oApp.ActiveDocument.Range.Text     '首先获取全部word内容
  p = InStr(p + 1, a, "姓名:")            '定位第一个 “姓名:”的位置
  Set myRange1 = oApp.ActiveDocument.Range(Start:=p + 2, End:=p + 5)  '获取该位置后面的姓名,后面重复操作
  p = InStr(p + 1, a, "姓名:")
  Set myRange2 = oApp.ActiveDocument.Range(Start:=p + 2, End:=p + 5)
  p = InStr(p + 1, a, "姓名:")
  Set myRange3 = oApp.ActiveDocument.Range(Start:=p + 2, End:=p + 5)
  oApp.Quit

2016-11-20 10:33
xfwxian
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-11-16
收藏
得分:0 
确实高手,在百度都没人解决的问题,你解决了,多谢。
2016-11-21 09:56
xfwxian
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-11-16
收藏
得分:0 
还有一个问题:我查找的诊断结果位于该行的最末尾,就是这里
p = InStr(p + 1, a, "诊断结果:")
 Set myRange3 = oApp.ActiveDocument.Range(Start:=p + 2, End:=p + 5),“End:=p + 5”如何改成行尾的位置?
2016-11-21 10:27
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
p = InStr(p + 1, a, "诊断结果:")  '“姓名:”长度为3,所以Start:=p + 2,“诊断结果:”长度为5,所以Start:=p + 4
 Set myRange3 = oApp.ActiveDocument.Range(Start:=p + 4, End:=len(a))

'如果提供一个word样本感觉应该有更高效、更智能的提取所需字符的方法
2016-11-21 11:08
快速回复:如何通过VB将光标移到WORD文档中指定字符的后面
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043571 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved