ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word用宏将英文标点转换为中文标点,但不转换小数点

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-11-4 11:36 | 显示全部楼层
本帖最后由 13907933959 于 2015-11-4 19:51 编辑
413191246se 发表于 2015-11-4 10:57
139:不好意思,我只是你的初级(小学)VBA老师,和论坛高人无法比!——请试试下面的宏(黑圈123和白圈一 ...

师傅好!
那里的话,您是我的恩师!曾无数次的帮过我!您的水平我又不是不知道,我遇到的难题有90%以上是您给解决的,没有您我连来论坛上看的时间都没有,对您我只有尊敬、崇拜和感谢,由于自己是菜鸟,遇到的问题又特别多,天天纠缠您我心里确实很不好意思,也是前几天在论坛上看帖子,偶然看到shenghua8 前辈对他人的回复,我也就向他求教,没想到这位前辈和您一样,同样热心的帮助我,这个论坛上好心的前辈还是多!

师傅、这个代码不知怎么回事,运行时提示错误5623。

TA的精华主题

TA的得分主题

发表于 2015-11-4 15:12 | 显示全部楼层
本帖最后由 13907933959 于 2015-11-4 15:13 编辑
413191246se 发表于 2015-11-4 10:59
全文A全部替换为B的语句还是:(139你的第一、二个问题)
    ActiveDocument.Content.Find.Execute findt ...

师傅好!
这句语句您前几天提醒过我,就是几天前我给您的小标题编号附件里面,如果要达到全部替换的话至少有几百步,也就是说要几百句  ActiveDocument.Content.Find.Execute findtext:="^l", ReplaceWith:="^p", Replace:=wdReplaceAll 这句语句,我想VBA中有不有类似的语句,中间带括号什么的,可以把所有查找的A、A、A、……括在括号内,把所有替换的B、B、B、……括在另一个括号内再替换,这样可以简化很多很多的步骤,不用几百句 ActiveDocument.Content.Find.Execute findtext:="^l", ReplaceWith:="^p", Replace:=wdReplaceAll 这句语句。

TA的精华主题

TA的得分主题

发表于 2015-11-5 08:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shenghua8 发表于 2015-11-2 15:51
查找

勾上使用通配符,

前辈好!

再查找。([\.\.])
勾上使用通配符,
替换为\1\1

能不能在上面替换的基础上,再劳前辈加上英文""双引号的替换。

谢谢前辈!

TA的精华主题

TA的得分主题

发表于 2015-11-5 09:56 | 显示全部楼层
13907933959 发表于 2015-11-5 08:07
前辈好!

再查找。([\.\.])

双引号,因为涉及到中文双引号有左有右,替换很麻烦。
还是找懂VBA的给你写一个吧。

TA的精华主题

TA的得分主题

发表于 2015-11-5 11:08 | 显示全部楼层
shenghua8 发表于 2015-11-5 09:56
双引号,因为涉及到中文双引号有左有右,替换很麻烦。
还是找懂VBA的给你写一个吧。

前辈好!
好的。
前辈、按照您的指教,第3个问题是可以一次替换,再假如:这些MS Gothic字体标题符号后面有的还有一个空格、二个空格的,有的没有,可否请前辈再给一个一次性的替换代码?

TA的精华主题

TA的得分主题

发表于 2015-11-5 11:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
13907933959 发表于 2015-11-5 11:08
前辈好!
好的。
前辈、按照您的指教,第3个问题是可以一次替换,再假如:这些MS Gothic字体标题符号后 ...

没有一次的。

先查找
  1. ([㊀㊁㊂❶❷❸]@)[  ]@
复制代码

勾上使用通配符
替换成
  1. \1
复制代码



再进行进一步的替换。

此论坛 Word 版块有很多关于 使用通配符替换 的教程,
自己搜索,好好学一下。
不要整天光想着用现成的。

TA的精华主题

TA的得分主题

发表于 2015-11-5 12:29 | 显示全部楼层
shenghua8 发表于 2015-11-5 11:15
没有一次的。

先查找

前辈好!
批评的对!
前辈、不过这个代码在编号后面有一个空格的加上了顿号,并去除了空格。还有2个问题没有解决:
1、编号后面没有空格的没能加上顿号。
2、编号后面有2个空格的需能加上顿号,但还有一个空格。
劳请前辈再修改一下代码,谢谢!

TA的精华主题

TA的得分主题

发表于 2015-11-5 15:24 | 显示全部楼层
13907933959 发表于 2015-11-5 12:29
前辈好!
批评的对!
前辈、不过这个代码在编号后面有一个空格的加上了顿号,并去除了空格。还有2个问 ...

事不过三,自己思考。
不要再点我回复了。{:soso_e111:}

TA的精华主题

TA的得分主题

发表于 2015-11-5 16:11 | 显示全部楼层
    139 和 shenghua8(升华)朋友讨论得很热烈!
    139:有现成的宏《英文双引号转换为中文双引号》,但不保证配对。
    另外,你关于文字中间有空格的问题,如果空格多,并且没必要保留空格的话,我有一个现成的宏《删除所有空格》,它的特点是:如果选定了文字区域,就删除选定区域内的所有空格;否则,没有选定文字的话,会选定文档中的全部文字(即全选),删除所有空格。——但其实,有些空格用此宏也未必能删除。
    还有,昨晚我按你的要求用《数组》(这个我不太会,但觉得似乎可以)做了一个《批量替换》宏。还有,MS Gothic字体中的数目字符号,即黑圈123白圈一二三后面有若干空格也要加顿号的这个宏,我也重新编辑了一下,下面把 3 个宏都发上来,你复制到 VBE 中试试吧!
  1. Sub 删除所有空格()
  2.     Dim myRange As Range
  3.     If Selection.Type = wdSelectionIP Then Selection.WholeStory
  4.     Set myRange = Selection.Range
  5.     myRange.Find.Execute findtext:=" ", ReplaceWith:="", Replace:=wdReplaceAll    '删除所有全角空格
  6.     myRange.Find.Execute findtext:="^w", ReplaceWith:="", Replace:=wdReplaceAll    '删除所有空白区域
  7. End Sub
  8. Sub 批量替换_数组()
  9.     Dim a, b, i As Long
  10.     a = Array("北京", "上海", "天津", "重庆", "沈阳", "大连", "广州")
  11.     b = Array("BeiJing", "ShangHai", "TianJin", "ChongQing", "ShenYang", "DaLian", "GuangZhou")
  12.     Do
  13.         ActiveDocument.Content.Find.Execute findtext:=a(i), ReplaceWith:=b(i), Replace:=wdReplaceAll
  14.         i = i + 1
  15.     Loop Until i = 7
  16. End Sub
  17. Sub 黑圈123白圈一二三加顿号()
  18.     Selection.HomeKey Unit:=wdStory
  19.     Selection.Find.ClearFormatting
  20.     Do While Selection.Find.Execute(findtext:=ChrW(10102), Forward:=True)
  21.         Do
  22.             Selection.MoveEnd Unit:=wdCharacter, Count:=1
  23.             If Asc(Selection.Characters.Last) = 13 Then Exit Do
  24.         Loop Until Selection.Characters.Last.Text <> ChrW(160) And Asc(Selection.Characters.Last) <> 9 And _
  25.             Selection.Characters.Last Like "[!  ]"
  26.         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  27.         Selection = Replace(Selection, ChrW(160), "")
  28.         Selection = Replace(Selection, " ", "")
  29.         Selection = Replace(Selection, " ", "")
  30.         Selection = Replace(Selection, Chr(9), "")
  31.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  32.         If Selection.Characters.Last.Text = "、" Then
  33.             Selection.Characters.Last.Delete
  34.         Else
  35.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  36.         End If
  37.         Selection.InsertAfter Text:="、"
  38.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  39.     Loop
  40. '
  41.     Selection.HomeKey Unit:=wdStory
  42.     Selection.Find.ClearFormatting
  43.     Do While Selection.Find.Execute(findtext:=ChrW(10103), Forward:=True)
  44.         Do
  45.             Selection.MoveEnd Unit:=wdCharacter, Count:=1
  46.             If Asc(Selection.Characters.Last) = 13 Then Exit Do
  47.         Loop Until Selection.Characters.Last.Text <> ChrW(160) And Asc(Selection.Characters.Last) <> 9 And _
  48.             Selection.Characters.Last Like "[!  ]"
  49.         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  50.         Selection = Replace(Selection, ChrW(160), "")
  51.         Selection = Replace(Selection, " ", "")
  52.         Selection = Replace(Selection, " ", "")
  53.         Selection = Replace(Selection, Chr(9), "")
  54.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  55.         If Selection.Characters.Last.Text = "、" Then
  56.             Selection.Characters.Last.Delete
  57.         Else
  58.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  59.         End If
  60.         Selection.InsertAfter Text:="、"
  61.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  62.     Loop
  63. '
  64.     Selection.HomeKey Unit:=wdStory
  65.     Selection.Find.ClearFormatting
  66.     Do While Selection.Find.Execute(findtext:=ChrW(10104), Forward:=True)
  67.         Do
  68.             Selection.MoveEnd Unit:=wdCharacter, Count:=1
  69.             If Asc(Selection.Characters.Last) = 13 Then Exit Do
  70.         Loop Until Selection.Characters.Last.Text <> ChrW(160) And Asc(Selection.Characters.Last) <> 9 And _
  71.             Selection.Characters.Last Like "[!  ]"
  72.         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  73.         Selection = Replace(Selection, ChrW(160), "")
  74.         Selection = Replace(Selection, " ", "")
  75.         Selection = Replace(Selection, " ", "")
  76.         Selection = Replace(Selection, Chr(9), "")
  77.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  78.         If Selection.Characters.Last.Text = "、" Then
  79.             Selection.Characters.Last.Delete
  80.         Else
  81.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  82.         End If
  83.         Selection.InsertAfter Text:="、"
  84.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  85.     Loop
  86. '
  87.     Selection.HomeKey Unit:=wdStory
  88.     Selection.Find.ClearFormatting
  89.     Do While Selection.Find.Execute(findtext:=ChrW(12928), Forward:=True)
  90.         Do
  91.             Selection.MoveEnd Unit:=wdCharacter, Count:=1
  92.             If Asc(Selection.Characters.Last) = 13 Then Exit Do
  93.         Loop Until Selection.Characters.Last.Text <> ChrW(160) And Asc(Selection.Characters.Last) <> 9 And _
  94.             Selection.Characters.Last Like "[!  ]"
  95.         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  96.         Selection = Replace(Selection, ChrW(160), "")
  97.         Selection = Replace(Selection, " ", "")
  98.         Selection = Replace(Selection, " ", "")
  99.         Selection = Replace(Selection, Chr(9), "")
  100.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  101.         If Selection.Characters.Last.Text = "、" Then
  102.             Selection.Characters.Last.Delete
  103.         Else
  104.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  105.         End If
  106.         Selection.InsertAfter Text:="、"
  107.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  108.     Loop
  109. '
  110.     Selection.HomeKey Unit:=wdStory
  111.     Selection.Find.ClearFormatting
  112.     Do While Selection.Find.Execute(findtext:=ChrW(12929), Forward:=True)
  113.         Do
  114.             Selection.MoveEnd Unit:=wdCharacter, Count:=1
  115.             If Asc(Selection.Characters.Last) = 13 Then Exit Do
  116.         Loop Until Selection.Characters.Last.Text <> ChrW(160) And Asc(Selection.Characters.Last) <> 9 And _
  117.             Selection.Characters.Last Like "[!  ]"
  118.         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  119.         Selection = Replace(Selection, ChrW(160), "")
  120.         Selection = Replace(Selection, " ", "")
  121.         Selection = Replace(Selection, " ", "")
  122.         Selection = Replace(Selection, Chr(9), "")
  123.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  124.         If Selection.Characters.Last.Text = "、" Then
  125.             Selection.Characters.Last.Delete
  126.         Else
  127.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  128.         End If
  129.         Selection.InsertAfter Text:="、"
  130.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  131.     Loop
  132. '
  133.     Selection.HomeKey Unit:=wdStory
  134.     Selection.Find.ClearFormatting
  135.     Do While Selection.Find.Execute(findtext:=ChrW(12930), Forward:=True)
  136.         Do
  137.             Selection.MoveEnd Unit:=wdCharacter, Count:=1
  138.             If Asc(Selection.Characters.Last) = 13 Then Exit Do
  139.         Loop Until Selection.Characters.Last.Text <> ChrW(160) And Asc(Selection.Characters.Last) <> 9 And _
  140.             Selection.Characters.Last Like "[!  ]"
  141.         Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  142.         Selection = Replace(Selection, ChrW(160), "")
  143.         Selection = Replace(Selection, " ", "")
  144.         Selection = Replace(Selection, " ", "")
  145.         Selection = Replace(Selection, Chr(9), "")
  146.         Selection.MoveEnd Unit:=wdCharacter, Count:=1
  147.         If Selection.Characters.Last.Text = "、" Then
  148.             Selection.Characters.Last.Delete
  149.         Else
  150.             Selection.MoveEnd Unit:=wdCharacter, Count:=-1
  151.         End If
  152.         Selection.InsertAfter Text:="、"
  153.         Selection.MoveRight Unit:=wdCharacter, Count:=1
  154.     Loop
  155. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-11-5 16:12 | 显示全部楼层
139:下面的宏不是我编的,是摘自网络:
Sub 替换英文双引号为中文()
    Selection.WholeStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
      .Text = """"
      .Forward = True
      .Wrap = wdFindStop
      .MatchByte = True
    End With
    With Selection
      While .Find.Execute
          .Text = ChrW(8220)
          .Find.Execute
          .Text = ChrW(8221)
      Wend
    End With
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 02:37 , Processed in 0.025315 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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