天天看點

Word宏應用:自動添加多級框圖

作者:點易部落

在編輯很多文檔的過程中,往往需要添加文本框圖來表示組織機構、過程程式、工藝順序等,傳統的方法得去多次點選菜單操作,非常繁瑣。我也是在工作中多次遇到此類場景,是以我就想用VBA宏來解決此類問題,經過很多次的編寫和調試,現将方法和代碼貢獻給大家,希望能夠在繁忙的工作中給您提高一點點效率。

Word宏應用:自動添加多級框圖

首先打開word文檔,按下快捷鍵Alt+F8,在“宏名”欄中輸入“自動批量删除空白行”,這是給它起個名字,然後點選“建立”。

接下來,在新打開的視窗上,你會看到光标在閃爍,把下面代碼内容複制粘貼到此處:

Sub 自動添加多級框圖()
    Dim doc As Document
    Set doc = ActiveDocument
    
    '輸入要建立的級别個數
    Dim levelCount As Variant
    levelCount = InputBox("請輸入要建立的級别個數:", "輸入級别個數")
    
    '轉換為整數
    Dim count As Integer
    count = CInt(levelCount)
    
    '檢查輸入個數是否正确
    If count < 2 Or count > 5 Then
        MsgBox "輸入個數不正确,請重新輸入(2-5之間)!"
        Exit Sub
    End If
    
    '建立框圖
    Dim i As Integer
    Dim shape As shape
    Dim leftPos As Single, topPos As Single
    Dim level As Integer
    
    For level = 1 To count
        '計算框圖位置
        leftPos = Selection.Information(wdHorizontalPositionRelativeToPage) + 50 * (level - 1)
        topPos = Selection.Information(wdVerticalPositionRelativeToPage) + 50 * (level - 1)
        
        '建立框圖
        Set shape = doc.Shapes.AddShape(msoShapeRectangle, leftPos, topPos, 100, 50)
        shape.Fill.Visible = msoFalse
        shape.Line.Visible = msoTrue
        
        '添加文本内容
        shape.TextFrame.TextRange.Text = "框圖 " & level
        shape.TextFrame.TextRange.Font.Color = RGB(0, 0, 0)
        '繪制箭頭連接配接框圖
        If level < count Then
            For i = 1 To level
                leftPos = shape.Left + shape.Width
                topPos = shape.Top + (shape.Height / level * i) - 10
                
                Set shape = doc.Shapes.AddShape(msoShapeDownArrow, leftPos, topPos, 50, 20)
                shape.Line.Visible = msoTrue
                shape.ShapeStyle = msoLineStylePreset3
                
                leftPos = shape.Left + shape.Width
                topPos = shape.Top
                
                Set shape = doc.Shapes.AddShape(msoShapeRectangle, leftPos, topPos, 100, 50)
                shape.Line.Visible = msoTrue
                shape.TextFrame.TextRange.Text = "框圖 " & level + 1 & "." & i
                shape.TextFrame.TextRange.Font.Color = RGB(0, 0, 0)
               
            Next i
        End If
    Next level
    
    MsgBox "框圖建立完成!"
End Sub           

想要了解更多 Word宏技巧,請關注@點易部落,我們會經常分享一些實用的辦公小技巧,我們的口号:小技巧、大作用。

繼續閱讀