ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] WORD中的大写金额处理 

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-31 06:33 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
最近因同事要求,合同中的大写金额比较麻烦,希望能改进,我网上查了,没有一个完美的办法.
故我借鉴了WORD中的域处理,结合了EXCEL中的一些方法,制作了以下代码,
但因每个人的具体应用是不同的,代码不能一成不变,不同的场合是需要调整的,在此仅供参考.
文档中有一个转大写代码,还有一个菜单代码,(菜单中会出"金额大写"按钮),其中大写代码如下:

'格式合同中是“————元”,故不用考虑元、角、分   
Sub xzmje()
Dim tem1, tem2
    If IsNumeric(Selection.Text) = True Then
        tem3 = Selection.Text
        If InStr(Selection.Text, ".") > 0 Then
        tem1 = Split(Selection.Text, ".")(0)
        tem2 = Split(Selection.Text, ".")(1)
        tem2 = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(tem2, "0", "零"), "1", "壹"), "2", "贰"), "3", "叁"), "4", "肆"), "5", "伍"), "6", "陆"), "7", "柒"), "8", "捌"), "9", "玖")
        tem2 = "点" & tem2
        Selection.Fields.Add Range:=Selection.Range, Text:="= " & tem1 & "\* CHINESENUM2"
        Selection = Replace(Replace(Selection & tem2, " ", ""), vbCr, "")
        Else
        Selection.Fields.Add Range:=Selection.Range, Text:="= " & Selection.Text & "\* CHINESENUM2"
        Selection = Replace(Selection, vbCr, "")
        End If
    End If
End Sub
另外,WORD中使用宏,宏安全性请设为"中"
使用方法:文档中输入数字后,选中数字,点击按钮.

金额大写.rar

10.52 KB, 下载次数: 125

TA的精华主题

TA的得分主题

发表于 2012-3-31 07:32 | 显示全部楼层
楼主辛苦了,谢谢分享!

TA的精华主题

TA的得分主题

发表于 2012-3-31 09:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢楼主的分享!
只能处理选中连续数字。
能否修改为:如果有选中区域,则对选中的区域进行处理,否则做全文处理?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-31 11:58 | 显示全部楼层
tangqingfu 发表于 2012-3-31 09:27
谢谢楼主的分享!
只能处理选中连续数字。
能否修改为:如果有选中区域,则对选中的区域进行处理,否则做 ...

谢谢大侠关注,我在做前也搜索参考了本论坛的帖子,示例文件中用的是域代码,数据虽然在WORD中,但在WORD的表格中,故尚有确定的位置
我因位置是不确定的,故采用选中区域,且对选中区域是有要求的,必须符合某一条件,然后处理
如果对未选中区域处理,这个有点难,因为文中什么内容都有,有文字、数字、字母、图片等等,若逐字判断,则判断1个?2个?3个?等等不好定,且文中并非所有的数字均要转为大写。
其实,前面我讲到每个人的文档不同,要求不同,只能具体情况具体对待了,况且我写的也在不断改进中。

TA的精华主题

TA的得分主题

发表于 2012-3-31 12:04 | 显示全部楼层
谢谢smhf_6兄的回复!
如果有多处金额,用您的处理起来可能就比较麻烦了,所以才有一劳永逸的想法。
期待smhf_6兄更多Word VBA作品……

TA的精华主题

TA的得分主题

发表于 2012-4-9 21:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我是做财务的,谢谢,学习了

TA的精华主题

TA的得分主题

发表于 2012-4-19 01:48 | 显示全部楼层
感觉还是有用的,谢谢楼主分享!!!

TA的精华主题

TA的得分主题

发表于 2012-4-19 08:21 | 显示全部楼层
tang兄提出的:
1、关于判断选区形态的问题,其实我看论坛里面的人写过很多次了,比如:
  Dim wRng As Range
   Set wRng = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
2、关于多个金额批处理问题,则可以用查找替换来一一匹配,比如:
  Do While wRng.Find.Execute(findtext:="[0-9.]@元", MatchWildcards:=True)
      ......
   Loop

TA的精华主题

TA的得分主题

发表于 2012-5-1 12:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个也很有意思啊

TA的精华主题

TA的得分主题

发表于 2012-9-11 16:26 | 显示全部楼层
我输入数字后 没有看到按钮 请楼主告诉一下 谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-3 03:01 , Processed in 0.037072 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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