ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

引号替换问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-6-7 17:16 | 显示全部楼层

是吗?

老兄,你检查一下你的WORD自动更正,键入时自动更正将直引号替换为弯引号,如果有勾你根本就不要替换了。

所谓的英文引号指的直引号!

TA的精华主题

TA的得分主题

发表于 2004-6-15 18:40 | 显示全部楼层
以下是引用如意在2004-6-7 16:35:00的发言:

上面的各位大虾们,你们怎么总喜欢把事情简单的事情搞得那么复杂呀。

如果让我做,我会进行两次替换就行了,先替换前引号再替换后引号,全文就搞定了。

我觉得这样会简单得多哦。

  英文引号似乎是不分前后的,你怎么前引号、后引号地替换,呵呵。

  长篇讲话的引用中,往往连续几个段只有左引号,没有右引号,比较难受。

TA的精华主题

TA的得分主题

发表于 2004-7-4 10:21 | 显示全部楼层

《电脑爱好者》2004、13期最新文章

Sub 字符替换() '宏名称,可修改为其他字符 With ActiveDocument.Content.Find '在当前文档中进行查找 .Text = "其它" '被替换的字符 .Replacement.Text = "其他" '替换的字符 .Execute Replace:=wdReplaceAll, Forward:=True '替换全部 End With End Sub

Sub 替换引号() Dim Countx As Integer, i As Integer, Sh As Byte '声明变量 '以下代码统计出文中的引号数目(包括""“”) Countx = 0 On Error Resume Next With ActiveDocument.Content.Find Do While .Execute(FindText:="""", Forward:=True, Format:=True) = True Countx = Countx + 1 Loop '以下代码判断引号是否配对出现 Sh = Countx Mod 2 If Sh <> 0 Then MsgBox "引号不配对!" Exit Sub '如果引号不配对,则退出宏 End If End With For i = 1 To Countx Sh = i Mod 2 '求i值除2的余数 If Sh <> 0 Then '如果余数不等于0(即为奇数),则将相应的引号替换为“前z” With ActiveDocument.Content.Find .Text = """" .Replacement.Text = "前z" .Execute Replace:=wdReplaceOne, Forward:=True End With Else With ActiveDocument.Content.Find '反之则将相应的引号替换为“后z” .Text = """" .Replacement.Text = "后z" .Execute Replace:=wdReplaceOne, Forward:=True End With End If Next '进行下一对引号的替换 With ActiveDocument.Content.Find '以下代码将所有的“前z”替换为左引号 .Text = "前z" .Replacement.Text = "“" .Execute Replace:=wdReplaceAll, Forward:=True '以下代码将所有的“后z”替换为右引号 .Text = "后z" .Replacement.Text = "”" .Execute Replace:=wdReplaceAll, Forward:=True End With End Sub

TA的精华主题

TA的得分主题

发表于 2004-7-4 11:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用ahmancq在2004-7-4 10:21:00的发言:

《电脑爱好者》2004、13期最新文章

谢谢ahmancq,能告诉我是谁发表的?!

TA的精华主题

TA的得分主题

发表于 2004-7-4 12:07 | 显示全部楼层

《电脑爱好者》小编有话说:"......另外这里要特别感谢excelhome论坛的守柔网友提供的word引号替换宏代码。"

守柔大侠:得罪,谅解!

TA的精华主题

TA的得分主题

发表于 2004-12-17 11:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用如意在2004-6-7 16:35:00的发言:

上面的各位大虾们,你们怎么总喜欢把事情简单的事情搞得那么复杂呀。

如果让我做,我会进行两次替换就行了,先替换前引号再替换后引号,全文就搞定了。

我觉得这样会简单得多哦。

同意如意的意见,没有必要搞的如此复杂吧,大不了两次查找 替换 录制成宏,或简单加个判断——找没找到

TA的精华主题

TA的得分主题

发表于 2004-12-17 11:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用办公之星在2004-6-15 18:40:00的发言:

  英文引号似乎是不分前后的,你怎么前引号、后引号地替换,呵呵。

  长篇讲话的引用中,往往连续几个段只有左引号,没有右引号,比较难受。

啊,没想到这点……嘿……惭愧惭愧

TA的精华主题

TA的得分主题

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

是啊是啊,如果不是这样,大家都会自己替换两次就解决了,不用来这里求助了。

再问一下,能不能在替换时自动匹配单引号和双引号呢?

TA的精华主题

TA的得分主题

发表于 2005-2-20 23:50 | 显示全部楼层

我在别的地方看到一个这样的宏,效果好像还可以。不过我不懂这东西,版主大人是高手,给解释一下。

Sub ReplaceQuote() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """" .Forward = True .Wrap = wdStop .MatchByte = True End With With Selection While .Find.Execute .Text = ChrW(8220) .Find.Execute .Text = ChrW(8221) Wend End With End Sub

TA的精华主题

TA的得分主题

发表于 2005-2-21 06:17 | 显示全部楼层

十分感谢SZY提供的代码,十分有用。

以下是我参照上述代码修改后的代码及说明:

'* +++++++++++++++++++++++++++++ '* Created By 守柔(ShouRou)@ExcelHome 2005-2-21 6:07:58 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Sub ReplaceQuote() Selection.HomeKey unit:=wdStory '移到文档首位置 With Selection.Find '设置查找条件 .ClearFormatting '清除查找格式 .Replacement.ClearFormatting ''清除替换格式 .Text = """" '查找的文字为" While .Execute: Selection.Text = ChrW(8220) '每次找到后将选定文本修改为前引号 .Execute: Selection.Text = ChrW(8221) '每次找到后将选定文本修改为后引号 Wend End With End Sub '----------------------

szy兄提供的代码中有一个错误是 .Wrap = wdStop,应该为 .Wrap = wdFindStop

看了我简化后的代码及说明,我想应该能理解。

我的代码便是参考19楼而来,其原理是利用selection.find方法,也就是每找到一处,自动选定,然后利用selection.text将选定文本改为前或者后引号(巧!妙!),在selection.text=中,也可以直接键入中文前/后引号。

当然,无论何种代码,对于嵌套引号是无法判断的。(19、20楼代码对于是否配对未进行检测)

[此贴子已经被作者于2005-2-21 6:19:32编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 04:07 , Processed in 0.034925 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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