ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]如何返回查找的结果

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-2-27 14:55 | 显示全部楼层 |阅读模式
在有很多篇这样的文档,中间有一些全角字符的unicode码值, 都是以这种形式出现的(中间没有空格),& # x 0 3 B 1 ; & # x 0 3 B 2 ; & # x 0 3 C 7 ; & # x 0 3 D 6 ; unicode码值前面都有“&#x”标记,后面都有“;”,我想通过查找的办法将它转换为全角字符, 我想如果能够直接得到查找的结果,对结果进行转换,这样也许更好。 有两个问题搞不太清白: ①在查找中如何以字符串的形式得到查找的结果; ②在整个文档中查找。 请高手指点!
[此贴子已经被守柔于2006-2-28 7:04:34编辑过]
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2006-2-27 17:44 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽

TA的精华主题

TA的得分主题

发表于 2006-2-27 18:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
小心有火。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-27 21:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

守柔大哥:

我想你是误会我了,我是向来都很佩服你的,今天我删除我的解决方案是由于我发现了其中几个错误之处,还有一点是运行效率不高,放到VB中跟本不行,怕被批得一无是处,原本是再修改了放上来的,故删除了.

再一次向

我的笨办法是:

Sub gUnicode()
Dim MyRange As Range
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
.MatchWildcards = True
.Text = "&#x[!<]@\;"
Do While .Execute(findtext:=.Text)
k = k + 1
Loop
End With
For i = 1 To k
Set MyRange = ActiveDocument.Content
With MyRange.Find
.ClearFormatting
.Forward = True
.MatchWildcards = True
.Text = "&#x[!<]@\;"
Do While .Execute
If MyRange.Text = "&#xFFFD;" Then MyRange.Text = "&#x65F6;"
If MyRange.Text = "&#x2212;" Then MyRange.Text = "&#xFF0D;"
If MyRange.Text = "&#x22C5;" Then MyRange.Text = "&#x00B7;"
If MyRange.Text = "&#x02DC;" Then MyRange.Text = "&#x007E;"
If MyRange.Text = "&#x21D2;" Then MyRange.Text = "&#xE03C;"
MyRange.Text = Unicode2AscII(Mid(MyRange, 4, 4))
Loop
End With
Next
End Sub
Public Function Unicode2AscII(ByVal s As String)
On Error Resume Next
Dim i As Integer
Dim r As String
For i = 1 To Len(s) Step 4
r = r + ChrB("&H" & Mid(s, i + 2, 2)) & ChrB("&H" & Mid(s, i, 2))
Next
Unicode2AscII = r
End Function
还是请各位大哥指点为盼!

[此贴子已经被守柔于2006-2-28 7:04:17编辑过]

TA的精华主题

TA的得分主题

发表于 2006-2-28 07:14 | 显示全部楼层

我在二楼回复时,因为我当时觉得楼主的代码运行效率不高,正在考虑如何提高效率时,看到楼主已解决,并且删除了解决的方法时,我当时就有些生气。说实在的,也许我觉得最近本版相似事件很多,累积所致吧,不当处,请楼主指正。

顺便提一下,关于请求帮助的贴子中,个别网友只求索取不想奉献的做法,是我所看不惯的,另有一些版友,既不珍惜自己的提问,更不珍惜别人给予的帮助,对别人的帮助不及时回复反又津津有味地发新贴求问者,从我自己角度讲,我不会再继续给予更多的帮助,比如部分喜欢顶的版友,我不想举例。

回到楼主问题上来,我对你的一楼文本觉得比较奇怪,复制到WORD中,既非半角,又非全角,不知楼主从何而来?

如果能将这些查找到的字符直接在VBA中成为半角字符,则半角字符中的十六进制值转为十进制(&H),继而直接在查找到的文本中更新为其CHRW值效果会更好一些。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-28 08:09 | 显示全部楼层
上面的这些文本,是从MathType以MathML的形式转换成文本所得,可能是我的说法不准确,我觉得这些是一些全角的字符,因为如果公式中含有“汉字”的话,就会出现这种形式的文本。 MathType转换出来就是这种文本的话(文本与编码的对应可以在word的插入符号中可以查到,我也用VB做了个单个字符的转换器,便于查看,校对,在附件里),我想就只能用VBA的形式将它还原, 但用VBA还原,我还是觉得第四楼中的代码运行效率不高。我反复在调试,如何提高效率,但我不喜欢用 GoTo 语句。 UGDmhf3H.rar (6.38 KB, 下载次数: 10)

TA的精华主题

TA的得分主题

发表于 2006-2-28 18:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

请参考这个 '* +++++++++++++++++++++++++++++ '* Created By I LOVE YOU WORD!@ExcelHome 2006-2-28 18:56:18 '仅测试于System: Windows NT Word: 11.0 Language: 2052 '№ 0026^The Code CopyIn [ThisDocument-ThisDocument]^' '* ----------------------------- Sub UnicodeToAsc() Dim myRange As Range, strText As String Dim myString As String Application.ScreenUpdating = False '关闭屏幕更新 Set myRange = ActiveDocument.Content '定义一个RANGE对象 strText = "\& \# x * ;" '定义一个需要查找的字符串,注意里面有空格和通配符 FN: With myRange.Find .ClearFormatting '清除查找格式 .Text = strText '设置查找文本 .MatchWildcards = True '使用通配符 Do While .Execute '如果成功查找 myString = VBA.Replace(myRange.Text, " ", "") '取得查找实例的替换空格的文本内容 myString = VBA.Mid(myString, 4, Len(myString) - 4) '取得从第四个字符开始到最后第二个字符之间的内容 ' Debug.Print myString myRange.Text = ChrW("&H" & myString) '设置RANGE的TEXT为转为10进制的ASCII文本 Set myRange = ActiveDocument.Content '刷新RANGE对象 GoTo FN '进入下一个查找 Loop End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub 相关链接:

http://club.excelhome.net/viewthread.php?tid=150151&replyID=298797&skin=0

http://club.excelhome.net/viewthread.php?tid=151893

[此贴子已经被作者于2006-2-28 18:55:57编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-28 20:14 | 显示全部楼层

感谢老大的代码!

运行起来确实快多了。

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

本版积分规则

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

GMT+8, 2024-11-16 07:39 , Processed in 0.041237 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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