ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何剔除嵌入工作表的WORD对象中文本的英文与中文间的空格?

如何剔除嵌入工作表的WORD对象中文本的英文与中文间的空格?

作者:绿色风 分类: 时间:2022-08-17 浏览:134
楼主
zldccmx
Q:如何剔除嵌入工作表的WORD对象中文本的英文与中文间的空格?
A:在EXCEL中执行下列代码,先以插入对象方式插入WORD对象,然后在此对象中灌入文本,并进行特殊规则的替换操作——剔除非中文与中文之间的空格。

  1. Sub Zldccmx()
  2.      '撰写:老朽
  3.       '网址:http://www.exceltip.net
  4.       '日期:2010-4-28  00:28:50
  5. 'VBE 下 工具 引用- MS WORD 11.0 控件
  6. [A1] = "原始文本影子图片": [I1] = "WORD对象处理之后的效果"
  7. Dim MyDoc As OLEObject, Cc, C
  8. Dim DD As New Word.Application
  9. Dim D_W As Word.Window
  10. Dim D_C As Word.Document
  11. Set RegEx = CreateObject("VBSCRIPT.REGEXP") 'RegEx为建立正则表达式
  12. RegEx.Global = True '设置全局可用
  13. RegEx.Pattern = "[^\u2581-\uffe5]\s{1,}[\u2581-\uffe5]"
  14. [I2].Activate
  15. Set MyDoc = ActiveSheet.OLEObjects.Add(ClassType:="Word.Document.8") '在工作表中插入一个WORD对象
  16. MyDoc.Verb 1 '激活对象
  17. Set D_W = MyDoc.Object.ActiveWindow
  18. '向WORD对象中灌入文本
  19. D_W.Document.words(1) = "各位看官: 请注意, 请的前面有几个空格,介于半角字符与中文之间,运行之后,半角字符: 与中文之间的[ 空格就消失了!" & vbLf & " 'RegEx[ []为建立正则表达式! " _
  20. & vbLf & "2 ,d ! e 。 国   人   均知道" & vbLf & " :ExcelTip's 风采”," & vbLf & _
  21. "看好了,汉字之间的空格并没有剔除哦!"

  22. [A2].Activate
  23. MyDoc.CopyPicture xlPrinter
  24. ActiveSheet.Paste '保存初始文本影子,便于比较
  25. MyDoc.Verb 1 '重新激活对象
  26. Set D_C = D_W.ActivePane.Document
  27. If RegEx.Test(D_C.Range) Then
  28. Set C = RegEx.Execute(D_C.Range)
  29. For Each Cc In C
  30. With D_C.Range.Find
  31. .Replacement.ClearFormatting
  32. .Text = Cc
  33. .Replacement.Text = Replace(Cc, " ", "")
  34. .Forward = True
  35. .Wrap = wdFindContinue
  36. .Format = False
  37. .MatchCase = False
  38. .MatchWholeWord = False
  39. .MatchByte = True
  40. .MatchWildcards = False
  41. .MatchSoundsLike = False
  42. .MatchAllWordForms = False
  43. .Execute Replace:=wdReplaceAll
  44. End With
  45. Next
  46. End If
  47. [A2].Activate '离开对象
  48. Set RegEx = Nothing
  49. Set MyDoc = Nothing
  50. Set DD = Nothing
  51. Set D_C = Nothing
  52. Set D_W = Nothing
  53. End Sub

剔除EXCEL中WORD对象中文本的英文与中文间的空格.rar


2楼
zldccmx
 

在OFFICE 2010 下也能正常运行!
3楼
纵鹤擒龙水中月
谢谢分享

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap