ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] (求助) 英式英语词汇替换美式英语词汇

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-19 19:22 | 显示全部楼层 |阅读模式
因工作需要,对大量的英文文章的英式英语和美式英语词汇进行批量替换。
主要要求如下:
1.对文章中出现的英式英语词汇和美式英语词汇进行互换(英式英语和美式英语词汇在附件里,是txt 文件,英式英语词汇和美式英语词汇以一个TAB隔开的)
2.替换完毕时对以下几项内容进行统计(统计内容用msgbox显示即可):
(1)给用户提供两种选择,即 ,要将英式英语词汇替换美式英语词汇还是美式英语词汇替换英式英语词汇
(2)一共有多少个可替换词汇(英式英语词汇和美式英语词汇数量是一样的,一 一对应的)
(3)一共替换了多少个单词
(4)对已被替换的单词加下划线,以便观察
(5) 所需时间(加这个部分是因为文章篇幅很大,单单是为了达到比较好的处理方式,这个部分可有可无)
---------------------------------------------------------------------------------------------------------------
***前段时间受到过本论坛老师的帮忙,谢谢在本论坛一直无私奉献的各位朋友们,老师们。
---------------------------------------------------------------------------------------------------------------
图片.png
附件.rar (45.95 KB, 下载次数: 33)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-24 10:32 | 显示全部楼层
自己顶一下,希望网友们出手帮忙一下。
英文内容很多,挨个的替换非常的麻烦。谢谢

TA的精华主题

TA的得分主题

发表于 2020-11-29 23:58 | 显示全部楼层
楼主,你好!——下面是我用 VBA 编写的一个宏,但因为你提供的替换文本单词太多,我觉得验证困难,我不确定替换结果是否正确;如果结果不正确,或对程序不满意请果断放弃之,仅供参考吧!请备份好原文件,再试用下面的宏(请同时打开 variants.txt(此文件名不要变化,否则出错)和 test.docx 文档(此文件名可以随意)后应用本宏):
  1. Sub aaaa_UK2US_Words_Replace()
  2.     Dim arr, brr, i&, y$, n&, t!, s&
  3.     If MsgBox("UK 2 US ? (or US 2 UK !)", 4 + 16, "Words Replace") = vbYes Then s = 1 Else s = 2
  4.     t = Timer
  5.     Documents("variants.txt").Activate
  6.     'arr
  7.     ActiveDocument.Content.Find.Execute "^9*(^13)", , , 1, , , , , , "\1", 2
  8.     ActiveDocument.Paragraphs.Last.Range.Delete
  9.     arr = Split(ActiveDocument.Content.Text, vbCr)
  10.     'brr
  11.     y = ActiveDocument.FullName
  12.     ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
  13.     Documents.Open FileName:=y
  14.     ActiveDocument.Content.Find.Execute "<*^9(*^13)", , , 1, , , , , , "\1", 2
  15.     ActiveDocument.Paragraphs.Last.Range.Delete
  16.     brr = Split(ActiveDocument.Content.Text, vbCr)
  17.     ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
  18.     'replace
  19.     For i = 0 To UBound(arr) - 1
  20.         With Selection
  21.             .HomeKey 6
  22.             With .Find
  23.                 .ClearFormatting
  24.                 If s = 1 Then
  25.                     .Text = arr(i)
  26.                     .Replacement.Text = brr(i)
  27.                 Else
  28.                     .Text = brr(i)
  29.                     .Replacement.Text = arr(i)
  30.                 End If
  31.                 .Forward = True
  32.                 .MatchWildcards = False
  33.                 .MatchWholeWord = True
  34.                 Do While .Execute
  35.                     With .Parent
  36.                         n = n + 1
  37.                         With .Font
  38.                             .Color = wdColorRed
  39.                             .Underline = wdUnderlineSingle
  40.                         End With
  41.                         .Start = .End
  42.                     End With
  43.                 Loop
  44.             End With
  45.         End With
  46.     Next
  47.     MsgBox "Replaced Words = " & n - 1 & vbCr & "Costed Time = " & Round(Timer - t, 2) & " Sec.", 0 + 48
  48. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-1 16:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2020-11-29 23:58
楼主,你好!——下面是我用 VBA 编写的一个宏,但因为你提供的替换文本单词太多,我觉得验证困难,我不确 ...

没能及时回复你,不好意思。我还以为没人会关注这个帖子。
-------------------
*网友,我刚刚测试了代码,结果非常完美,几乎没发现什么BUG.
*关键是英文文章内容繁多,英式英语和美式英语词汇数量也很多,我在附件里只列了900多个单词,总共有3千左右的可替换词汇。本来想用C#处理,后来打算用VBA处理,这样可以做个简单的插件来直接对大量英文文章进行处理。就因为这些原因,我才接触VBA,算是个菜鸟。当我们对大量英文文章进行替换操作非常严格,高质量完成任务,手动替换非常耗时间。所以求助网友们出手帮忙。
--------------------
*如果网友有时间,我很希望网友再出手改善一下几个点
1.直接对txt文件进行处理(凭借我几年的变成经验,没有必要存数据库的程序来说,处理txt,xml等文件是最好的选择)
2.加上可替换词汇的数量
3.用字典,正则,递归等处理
-----------------------------
我先用的宏提高我的工作量。非常感谢你

TA的精华主题

TA的得分主题

发表于 2020-12-1 22:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,我也不好意思!水平有限,只能帮到这儿了,字典/正则/递归等真的不会。更高要求可等待高人相助。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-2 19:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2020-12-1 22:02
楼主,我也不好意思!水平有限,只能帮到这儿了,字典/正则/递归等真的不会。更高要求可等待高人相助。

估计没人关注此贴了。谢谢网友,我先用你写宏。

TA的精华主题

TA的得分主题

发表于 2020-12-4 11:15 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-4 19:02 | 显示全部楼层
wdpfox 发表于 2020-12-4 11:15
较全的词汇表有吗?能否分享一下。谢谢!

网友,你好,有较全的词汇表。我整理完了会在这个贴子下面分享。

TA的精华主题

TA的得分主题

发表于 2020-12-4 20:15 来自手机 | 显示全部楼层
先谢谢朋友了!请朋友考虑能否以词根为据缩减词库数量。

TA的精华主题

TA的得分主题

发表于 2020-12-11 16:41 来自手机 | 显示全部楼层
413191246se 发表于 2020-11-29 23:58
楼主,你好!——下面是我用 VBA 编写的一个宏,但因为你提供的替换文本单词太多,我觉得验证困难,我不确 ...

请问老师如何用杜老师的遍历文件代码进行批量转换。为节约时间,可考虑先读词库,再遍历转换。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 01:01 , Processed in 0.041118 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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