使用vba进行Word文档的数学格式设置

使用方法:

打开word的视图菜单,选择查看宏,再选择创建宏,将下面的代码,拷贝到代码窗口,运行即可

主要功能:

处理word中,字母和数字,符合编辑规范,包括字体,字号,字形,行距等,支持基本初等函数名称,如sin,cos等

Sub SetMathStyle()


    Selection.WholeStory
    Selection.Range.CharacterWidth = wdWidthHalfWidth
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = True
    With Selection.Find
        .Text = "^$"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
     Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = False
    With Selection.Find
        .Text = "."
        .Replacement.Text = "."
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = False
    With Selection.Find
        .Text = "^#"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = False
    With Selection.Find
        .Text = ","
        .Replacement.Text = ","
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
     Selection.Find.Replacement.Font.Italic = False
    With Selection.Find
        .Text = "。"
        .Replacement.Text = "."
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
     Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Font.Italic = False
        Selection.Find.Replacement.Font.Name = "Times New Roman"
        With Selection.Find
            .Text = "([0-9]{1,})。([0-9]{1,})"
            .Replacement.Text = "\1.\2"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = False
    Selection.Find.Replacement.Font.Name = "Times New Roman"
        With Selection.Find
            .Text = "([0-9]{1}).([0-9]{1})"
            .Replacement.Text = "\1.\2"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Italic = False
    Selection.Find.Replacement.Font.Name = "Times New Roman"
        With Selection.Find
            .Text = "([A-E]{1})."
            .Replacement.Text = "\1."
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Dim func(25) As String
    func(0) = "sin"
    func(1) = "cos"
    func(2) = "tan"
    func(3) = "cot"
    func(4) = "lg"
    func(5) = "log"
    func(6) = "cm"
    func(7) = "mol"
    func(8) = "ln"
    func(9) = "arcsin"
    func(10) = "arccos"
    func(11) = "arctan"
    func(12) = "kg"
    func(13) = "km"
    func(14) = "cosh"
    func(15) = "arg"
    func(16) = "mod"
    func(17) = "max"
    func(18) = "min"
    func(19) = "csc"
    func(20) = "sec"
    func(21) = "lim"
    func(22) = "deg"
    func(23) = "det"
    func(24) = "exp"
    For i = 0 To 24
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Font.Italic = False
        With Selection.Find
            .Text = func(i)
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Next i
     For Each p In ActiveDocument.Paragraphs
        If p.Style = "标题 1" Then
            p.Range.Bold = True
            p.Range.Font.Name = "微软雅黑"
            p.Range.Font.Size = 26
            p.Range.Font.Color = RGB(0, 112, 192)
            p.Alignment = wdAlignParagraphCenter
            
        ElseIf p.Style = "标题 2" Then
            p.Range.Bold = True
            p.Range.Font.Name = "黑体"
            p.Range.Font.Size = 20
            p.Range.Font.Color = RGB(112, 48, 160)
        ElseIf p.Style = "标题 3" Then
            p.Range.Bold = True
            p.Range.Font.Name = "黑体"
            p.Range.Font.Size = 19
            p.Range.Font.Color = RGB(0, 176, 240)
        Else
            p.LineSpacingRule = wdLineSpaceDouble
            p.Range.Font.NameAscii = "Times New Roman"
            p.Range.Font.NameFarEast = "微软雅黑"
            p.Range.Font.NameOther = "Times New Roman"
            p.Range.Font.Size = 10.5
        End If
    Next p
    Dim Greekletter As String
    Greekletter = "αβγδεζηθικλμνξοπρστυφχψωΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"
    Dim greekcount As Integer
    greekcount = Len(Greekletter)
    Dim chgreek As String
    For i = 1 To greekcount
      chgreek = Mid(Greekletter, i, 1)
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Font.Italic = True
        Selection.Find.Replacement.Font.Name = "Symbol"
        With Selection.Find
            .Text = chgreek
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Next i
    
    
    
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值