ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] Word2003 & 2007 VBA 通用模板宏(2020元旦版) 2019-10-17

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-7 01:13 | 显示全部楼层
***2003版本请用2003代码,2007版本以上的请用2007代码,但最好是删除找到的 Word 空白通用模板 Normal.dot(2003版本)或 Normal.dotm(2007以上版本)文件后应用,这样才是全新的。

TA的精华主题

TA的得分主题

发表于 2020-3-11 12:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢大神的慷慨分享!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-3 23:14 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-21 02:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
再顶一下……如果哪位朋友,在使用 Word2003/2007 的过程中,要简单地进行一下公文排版和普通格式排版,可以用我的这个《通用模板宏》,也叫《自动排版宏》,详细情况请参见其中 Readme.

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-9 00:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-5-15 18:52 | 显示全部楼层
你好.今天无意间看到你18年的一个帖子回复.word里人民币转大写的问题.方便加个QQ吗. 我没学过代码.目前只改了一小部分自己想要的结果.还有一部分实现不了

TA的精华主题

TA的得分主题

发表于 2020-5-15 18:58 | 显示全部楼层
本帖最后由 sinc4233 于 2020-5-16 10:46 编辑
  1.     Sub 人民币中文大写()
  2.     '功能:全文查找数字元(也可单选数字)转换为人民币中文大写

  3.         Dim i As String, j As String, k As String, x As String, y As String, u As Long, v As Long, n As Long, s As Long
  4.         x = MsgBox("大写是否放在数字前面?(否则后面)", vbYesNoCancel + vbExclamation, "人民币中文大写")
  5.         If x = vbYes Then
  6.             n = 1
  7.         ElseIf x = vbNo Then
  8.             n = 0
  9.         Else
  10.             End
  11.         End If

  12.     '全文/单个
  13.         If Selection.Type <> wdSelectionIP Then
  14.             Do While Selection.Characters.First Like "[!0-90-9]"
  15.                 Selection.MoveStart unit:=wdCharacter, Count:=1
  16.             Loop
  17.             Do While Not (Selection.Characters.Last Like "[0-90-9.,,  ]" Or Selection.Characters.Last Like ChrW(160))
  18.                 Selection.MoveEnd unit:=wdCharacter, Count:=-1
  19.             Loop
  20.             Selection.MoveEnd unit:=wdCharacter, Count:=1
  21.             If Selection Like "*[!元]" Then
  22.                 Selection.MoveEnd unit:=wdCharacter, Count:=-1
  23.                 Selection.InsertAfter Text:="元"
  24.             End If
  25.             s = 1
  26.             GoTo SingleNum
  27.         End If

  28.     '全文查找数字元
  29.         Selection.HomeKey unit:=wdStory
  30.         Selection.Find.ClearFormatting
  31.         Do While Selection.Find.Execute(findtext:="^#", Forward:=True, MatchWildcards:=False)
  32.             Do While Selection.Characters.Last Like "[0-90-9.,,  ]" Or Selection.Characters.Last Like ChrW(160)
  33.                 Selection.MoveEnd unit:=wdCharacter, Count:=1
  34.             Loop
  35.     SingleNum:
  36.             If Selection Like "*元" Then
  37.                 '格式处理
  38.                 Selection.Font.Bold = True '加粗
  39.                 Selection.Font.Color = wdColorBlue '蓝色
  40.                 Selection.Font.Underline = wdUnderlineWavyHeavy '重波浪线

  41.                 '选定数字
  42.                 Selection.MoveEnd unit:=wdCharacter, Count:=-1
  43.                 k = "万仟佰拾亿仟佰拾万仟佰拾元空角分"
  44.                 i = Selection

  45.                 '规范数字
  46.                 i = Replace(i, ChrW(160), "") '替换不间断空格
  47.                 i = Replace(i, " ", "") '替换半角空格
  48.                 i = Replace(i, " ", "") '替换全角空格
  49.                 i = Replace(i, ",", "") '替换英文逗号
  50.                 i = Replace(i, ",", "") '替换中文逗号
  51.                 i = Format(i) '删除数字前后无效零/小数点

  52.                 '单个数字
  53.                 If s = 1 Then
  54.                     i = StrConv(i, vbNarrow) '全角转半角
  55.                     Dim a
  56.                     a = Val(i) '数值型
  57.                     If Len(i) <> Len(a) Then MsgBox "非纯数字,无法转换!!!", vbOKOnly + vbCritical, "人民币中文大写": End
  58.                 End If

  59.                 If i Like ".*" Then i = "0" & i

  60.                 '错误报警
  61.                 If Selection Like "*.*.*" Or Val(i) > 999999999999.99 Then
  62.                     Selection.Font.Color = wdColorRed '红色
  63.                     Selection.Font.Underline = wdUnderlineWavyHeavy '重波浪线
  64.                     GoTo Skip
  65.                 End If

  66.                 '强制格式
  67.                 If i Like "*?.??" Then
  68.                 ElseIf i Like "*?.?" Then
  69.                     i = i & "0"
  70.                 ElseIf i Like "*?.???*" Then
  71.                     i = Format(i, "0.00")
  72.                 Else
  73.                     i = i & ".00"
  74.                 End If

  75.                 '核心代码
  76.                 v = Len(i)
  77.                 k = Right(k, v)
  78.                 u = 0
  79.                 y = ""
  80.                 Do
  81.                     u = u + 1
  82.                     j = Mid(i, u, 1) & Mid(k, u, 1)
  83.                     y = y & j
  84.                 Loop Until u = v
  85.                 i = y

  86.                 '基本替换
  87.                 i = Replace(i, "1", "壹")
  88.                 i = Replace(i, "2", "贰")
  89.                 i = Replace(i, "3", "叁")
  90.                 i = Replace(i, "4", "肆")
  91.                 i = Replace(i, "5", "伍")
  92.                 i = Replace(i, "6", "陆")
  93.                 i = Replace(i, "7", "柒")
  94.                 i = Replace(i, "8", "捌")
  95.                 i = Replace(i, "9", "玖")
  96.                 i = Replace(i, "0", "零")
  97.                 i = Replace(i, ".", "点")
  98.                 i = Replace(i, "点空", "")

  99.                 '零字替换
  100.                 i = Replace(i, "零仟", "零")
  101.                 i = Replace(i, "零佰", "零")
  102.                 i = Replace(i, "零拾", "零")

  103.                 Do While i Like "*零零*"
  104.                     i = Replace(i, "零零", "零")
  105.                 Loop

  106.                 i = Replace(i, "零亿", "亿零")
  107.                 i = Replace(i, "零万", "万零")
  108.                 i = Replace(i, "零元", "元零")

  109.                 Do While i Like "*零零*"
  110.                     i = Replace(i, "零零", "零")
  111.                 Loop

  112.                 i = Replace(i, "零角零分", "整")
  113.                 i = Replace(i, "零角", "零")
  114.                 i = Replace(i, "零分", "")

  115.                 If i Like "元零*" Then i = Replace(i, "元零", "")
  116.                 If i = "元整" Then i = "零" & i

  117.                 If i Like "*万零元*" And Val(i) < 100000000 Then i = Replace(i, "万零元", "万元") '10万<=X<1亿
  118.                 i = Replace(i, "亿万", "亿")

  119.                 If i Like "*亿零万*" Then i = Replace(i, "零万", "") '>=10亿

  120.                 '转换结果
  121.                 i = "(人民币" & i & ")"
  122.                 If n = 1 Then Selection.InsertBefore Text:=i Else Selection.MoveEnd unit:=wdCharacter, Count:=1: Selection.InsertAfter Text:=i
  123.                 If s = 1 Then End
  124.             End If
  125.     Skip:
  126.             Selection.MoveRight unit:=wdCharacter, Count:=1
  127.         Loop
  128.     End Sub
复制代码

楼主你好 , 今天翻了半天找到你的这个代码.还可以用.就是和我想要的结果还有点不一样,由于不懂代码.改了半天只实现一点点自己想要的结果.麻烦楼主帮忙改下吗?
如果自己选中数字后,替换的结果不要原数字+ 元 + 大写, 只要大写的结果就可以了.然后全文替换的时候只改 "金额大写:"  后面的数字.    麻烦楼主方便的时候帮忙改下.非常感谢.

代码原结果:
d1.png


想要的结果:
d2.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-17 01:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sinc4233 朋友,你好!——我最新版本《人民币中文大写》宏程序,只支持全文将小写金额(数字元)转换为中文大写,不支持单个选定。我想一般日常工作中也不会有一组金额吧,还是要全文的金额都要转换。是不是呢?请提供一下日常工作中真实的金额小写转大写的文本附件。

TA的精华主题

TA的得分主题

发表于 2020-5-18 08:55 | 显示全部楼层
413191246se 发表于 2020-5-17 01:17
sinc4233 朋友,你好!——我最新版本《人民币中文大写》宏程序,只支持全文将小写金额(数字元)转换为中 ...

楼主,你好 .  我的意思是全文所有  "金额大写:"  后面的数字转成大写.. 不知道为什么无法上传附件,只能粘贴一部分内容,.麻烦楼主再看下.谢谢楼主.



关于《建东部建设投资有限公司2019年资产收益权一期六期第三次付息通知》,客户本金:2000000元,客户利息:87388.77元,需要支付利息:87388.77元。金额大写:87388.77请贵司于20200625日前支付至客户收益账户内。
关于《建东部建设投资有限公司2019年资产收益权一期七期第三次付息通知》,客户本金:6200000元,客户利息283,324.11元,需要支付利息:283,324.11元。金额大写:283,324.11。请贵司于20200625日前支付至客户收益账户内。
关于《建东部建设投资有限公司2019年资产收益权一期八期第三次付息通知》,客户本金:2760000元,客户利息:123,096.33元,需要支付利息::123,096.33元。金额大写:123,096.33。请贵司于20200625日前支付至客户收益账户内。





D1.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-19 00:35 | 显示全部楼层
* 楼主 的意思,正与我的猜想一致!请试试下面的代码:(请注意:粉红色是为了鲜明核对数据,如果不想要颜色,可以将代码倒数第8行含有“粉红”一行代码删除或屏蔽)
  1. Sub 人民币中文大写_金额大写()

  2.     ActiveDocument.Content.Find.Execute "金额大写:", , , 1, , , , , , "金额大写:", 2

  3.     Const s As String = "万仟佰拾亿仟佰拾万仟佰拾元角分"

  4.     Dim c&, i$, j&, a$, n&

  5.     c = 0

  6.     With ActiveDocument.Content.Find
  7.         .ClearFormatting
  8.         .Text = "金额大写:[0-9.  ^s^t,,]{1,}"
  9.         .Forward = True
  10.         .MatchWildcards = True
  11.         Do While .Execute
  12.             With .Parent
  13.                 .MoveStart 1, 5

  14.                 i = .Text

  15.                 i = Replace(i, " ", "")
  16.                 i = Replace(i, " ", "")
  17.                 i = Replace(i, vbTab, "")
  18.                 i = Replace(i, ChrW(160), "")
  19.                 i = Replace(i, ",", "")
  20.                 i = Replace(i, ",", "")

  21.                 If i Like "*.*.*" Then .Font.Color = wdColorRed: GoTo sk

  22.                 i = Format(i, "Standard")
  23.                 i = Replace(i, ",", "")
  24.                 i = Replace(i, ".", "")

  25.                 j = Len(i)

  26.                 If j > 15 Then GoTo sk

  27.                 a = ""

  28.                 For n = 1 To j
  29.                     a = a & Mid(i, n, 1) & Mid(s, 15 - j + n, 1)
  30.                 Next n

  31.                 a = Replace(a, "1", "壹")
  32.                 a = Replace(a, "2", "贰")
  33.                 a = Replace(a, "3", "叁")
  34.                 a = Replace(a, "4", "肆")
  35.                 a = Replace(a, "5", "伍")
  36.                 a = Replace(a, "6", "陆")
  37.                 a = Replace(a, "7", "柒")
  38.                 a = Replace(a, "8", "捌")
  39.                 a = Replace(a, "9", "玖")
  40.                 a = Replace(a, "0", "零")
  41. '''
  42.                 a = Replace(a, "零仟", "零")
  43.                 a = Replace(a, "零佰", "零")
  44.                 a = Replace(a, "零拾", "零")

  45.                 Do While a Like "*零零*"
  46.                     a = Replace(a, "零零", "零")
  47.                 Loop

  48.                 a = Replace(a, "零亿", "亿零")
  49.                 a = Replace(a, "零万", "万零")
  50.                 a = Replace(a, "零元", "元零")

  51.                 Do While a Like "*零零*"
  52.                     a = Replace(a, "零零", "零")
  53.                 Loop

  54.                 a = Replace(a, "零角零分", "整")
  55.                 a = Replace(a, "零角", "零")
  56.                 a = Replace(a, "零分", "")

  57.                 If a Like "元零*" Then a = Replace(a, "元零", "")
  58.                 If a = "元整" Then a = "零" & a

  59.                 If a Like "*万零元*" And Val(a) < 100000000 Then a = Replace(a, "万零元", "万元") '10万<=X<1亿
  60.                 a = Replace(a, "亿万", "亿")

  61.                 If a Like "*亿零万*" Then a = Replace(a, "零万", "") '>=10亿
  62. '''
  63.                 If c = 1 Then
  64.                     .InsertBefore Text:="(人民币" & a & ")"
  65.                 Else
  66.                     .Delete
  67.                     .InsertAfter Text:=a
  68.                     .Font.Color = wdColorPink '粉红(本行代码可删除/屏蔽)
  69.                 End If
  70. sk:
  71.                 .Start = .End
  72.             End With
  73.         Loop
  74.     End With
  75. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-30 20:48 , Processed in 0.038674 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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