word的手写字体

需要先去网站下载字体,可再在代码中修改字体名字

在word的宏进行编辑,WPS不能

代码一:

Sub 字体修改()

'

' 字体修改 宏

'

    Dim R_Character As Range

    Dim FontSize(5)

    ' 字体大小在5个值之间进行波动,可以改写

    FontSize(1) = "21"

    FontSize(2) = "21.5"

    FontSize(3) = "22"

    FontSize(4) = "22.5"

    FontSize(5) = "23"

    Dim FontName(3)

    '字体名称在三种字体之间进行波动,可改写,但需要保证系统拥有下列字体

    FontName(1) = "陈静的字完整版"

    FontName(2) = "萌妹子体"

    FontName(3) = "李国夫手写体"

    Dim ParagraphSpace(5)

    '行间距 在一定以下值中均等分布,可改写

    ParagraphSpace(1) = "12"

    ParagraphSpace(2) = "13"

    ParagraphSpace(3) = "20"

    ParagraphSpace(4) = "7"

    ParagraphSpace(5) = "12"

    '不懂原理的话,不建议修改下列代码

    For Each R_Character In ActiveDocument.Characters

        VBA.Randomize

        R_Character.Font.Name = FontName(Int(VBA.Rnd * 3) + 1)

        R_Character.Font.Size = FontSize(Int(VBA.Rnd * 5) + 1)

        R_Character.Font.Position = Int(VBA.Rnd * 3) + 1

        R_Character.Font.Spacing = 0

    Next

    Application.ScreenUpdating = True

    For Each Cur_Paragraph In ActiveDocument.Paragraphs

        Cur_Paragraph.LineSpacing = ParagraphSpace(Int(VBA.Rnd * 5) + 1)

    Next

        Application.ScreenUpdating = True

End Sub

代码二:

Sub 字体()
'
' 字体 宏
'
'
Dim R_Character As Range

    ' 字体大小在下列值之间进行波动,改成需要的大小,重复出现的次数越多,相应出现的概率越大,最小精度0.5
    Dim FontSize() As String
    FontSize = Split("18.5,18.5,18.5,19,18", ",")

    '字体名称在下列字体之间进行波动,改成需要的字体,但需要保证系统拥有下列字体,可以在word查看字体名字
    '请注意,这里的值只影响中文,英文和数字的字体是固定的,如果需要修改英文和数字的字体,可以在下面的代码中修改
    Dim FontName() As String
    FontName = Split("130-上首追光手写体,130-上首追光手写体,130-上首追光手写体,130-上首追光手写体,130-上首追光手写体", ",")
    
    ' 推荐字体
    ' "萌妹子体,张维镜手写楷书,手写大象体,陈静的字完整版,汉仪晨妹子W"
    ' 不太理想但可以凑合的字体
    ' "汉仪平安行粗简", "Aa一见钟情 (非商业使用)", "李国夫手写字体"

    'a数值越大,行距越大,波动范围a+x, x∈[-1~1]
    a = 0
    
    'b数值越大,字距越大,波动范围b+x, x∈[-1~1]
    b = 0

    '行间距 在一定以下值中均等分布,改成需要的大小,范围c+x, x∈[0~5]
    c = 25
    
    '不懂原理的话,不建议修改下列代码
    For Each R_Character In Selection.Characters

        VBA.Randomize
        
        ' 数组长度
        FontNameLength = UBound(FontName) - LBound(FontName)
        FontSizeLength = UBound(FontSize) - LBound(FontSize)

        ' 字体类型
        R_Character.Font.Name = FontName(Int(VBA.Rnd * FontNameLength) + 1)
        ' 字号大小
        R_Character.Font.Size = FontSize(Int(VBA.Rnd * FontSizeLength) + 1)
        ' 字的上下偏移
        R_Character.Font.Position = Choose(Int(VBA.Rnd * 5) + 1, -1, -0.5, 0, 0.5, 1) + a
        ' 字的左右间距
        R_Character.Font.Spacing = Choose(Int(VBA.Rnd * 5) + 1, -1, -0.5, 0, 0.5, 1) + b
        
        '这是修改字符字体的代码,如果需要修改英文和数字的字体,可以在这里修改
        If R_Character = "。" Or R_Character = "," Or R_Character = "," Or R_Character = ";" Or R_Character = "’" Or R_Character = "‘" Or R_Character = "“" Or R_Character = "”" Or R_Character = "!" Or R_Character = "?" Or R_Character = "、" Or R_Character = ":" Then
            ' 中文常用标点符号
            R_Character.Font.Name = "汉仪晨妹子W"
        ElseIf Asc(R_Character) >= 48 And Asc(R_Character) <= 57 Then
            ' 数字
            R_Character.Font.Name = "萌妹子体"
        ElseIf Asc(R_Character) >= 97 And Asc(R_Character) <= 122 Or Asc(R_Character) >= 65 And Asc(R_Character) <= 90 Or R_Character = "." Or R_Character = "(" Or R_Character = ")" Or R_Character = "(" Or R_Character = ")" Then
            ' 大小写字母
            R_Character.Font.Name = "汉仪晨妹子W"
        End If

    Next

    For Each Cur_Paragraph In ActiveDocument.Paragraphs
        ' 设置行间距类型为固定值
        Cur_Paragraph.LineSpacingRule = wdLineSpaceExactly
        ' 设置行间距的值
        Cur_Paragraph.LineSpacing = Int(VBA.Rnd * 5) + c
    Next

        ' 设置首行缩进,如不需要注释With到End With这段代码
    With Selection.ParagraphFormat
                ' 每个缩进单位长度,厘米
        .FirstLineIndent = CentimetersToPoints(0.35)
                ' 设置缩进单位
        .CharacterUnitFirstLineIndent = 2
    End With

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "“"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "”"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

    Application.ScreenUpdating = True

End Sub

应用于全文改成选中部分是将ActiveDocument.Characters改为Selection.Characters

存在一些问题,调整行距的数值调整后,没有发生变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值