完美拆分汉字

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在运行VBA之前请安装字体“楷体_GB2312”,运行“第一步”折分汉字成“freeform”图形零件。由于拆分成的零件的顺序与汉字的笔顺不一致,

所以要运行“第二步”,记下零件的顺序与汉字笔顺的对应关系。比如:“正”字,拆分成的零件的顺序是横、竖、竖、横、横,而汉字的笔顺是:

横、竖、横、竖、横。也就是你在第三步出来的输入框里依次输入1,2,4,3,5.就纠正了这个错误.

你可以直接运行”拆分汉字”,就得到按默认顺序组成的部件。就能更好理解为什么要分成麻烦的3个步骤。

将VBA代码稍作修改,就可以获得偏旁部首。当然,你也可以手工拖动笔画,组成自己想要的效果。

动手吧!下载不等于技能!!

Sub 第一步()

Dim s$

s = InputBox("请输入要拆分的汉字:", "拆分汉字", "正")

With Selection

.WholeStory

.Delete

ActiveDocument.Shapes.AddTextEffect(msoTextEffect1, s, "楷体_GB2312", 60#, msoFalse, msoFalse, 0, 0).Select

.Cut

.PasteSpecial DataType:=wdPasteMetafilePicture '选择性粘帖“图形(Windows图元文件)”

ActiveDocument.Shapes(1).Select

.ShapeRange.Ungroup.Select

.Cut

.MoveRight wdCharacter, 1

.Paste

MsgBox "请拿笔把汉字拆分成单个零件,记下一会儿是第几次看到的" & Chr(10) & "记在对应的零件旁边,每次间隔5秒", vbOKOnly, "黄义成温馨提示"

End With

End Sub

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub 第二步()

Dim x As Byte, m As Byte

m = ActiveDocument.Shapes.Count - 3

For x = 1 To m

ActiveDocument.Shapes(3 + x).Select

Sleep 5000

DoEvents

Next x

End Sub

Sub 第三步()

Dim m As Byte, num(), x As Byte, y As Byte

m = ActiveDocument.Shapes.Count - 3

ReDim num(1 To m)

For x = 1 To m

num(x) = InputBox("第" & x & "次看到的是第几画?", "为了更完美,需要您的参与!", "2")

Next x

With Selection

For x = 1 To m

For y = num(x) To m

ActiveDocument.Shapes(3 + x).Select

.Copy: .Paste: .ShapeRange.IncrementLeft 80 * y

Next y

Next x

End With

End Sub

Sub 拆分汉字()

Dim s$, x As Byte, y As Byte, m As Byte

s = InputBox("请输入要拆分的汉字:", "拆分汉字", "正")

With Selection

.WholeStory

.Delete '清空

ActiveDocument.Shapes.AddTextEffect(msoTextEffect1, s, "楷体_GB2312", 60#, msoFalse, msoFalse, 0, 0).Select

.Cut

.PasteSpecial DataType:=wdPasteMetafilePicture '选择性粘帖“图形(Windows图元文件)”ActiveDocument.Shapes(1).Select

.ShapeRange.Ungroup.Select

.Cut

.MoveRight wdCharacter, 1

.Paste

m = ActiveDocument.Shapes.Count – 3’汉字的总笔画数

For x = 1 To m

For y = x To m

ActiveDocument.Shapes(x + 3).Select

.Copy: .Paste: .ShapeRange.IncrementLeft 65 * y

Next y

Next x End With End Sub

相关文档
最新文档