在編輯很多文檔的過程中,往往需要添加文本框圖來表示組織機構、過程程式、工藝順序等,傳統的方法得去多次點選菜單操作,非常繁瑣。我也是在工作中多次遇到此類場景,是以我就想用VBA宏來解決此類問題,經過很多次的編寫和調試,現将方法和代碼貢獻給大家,希望能夠在繁忙的工作中給您提高一點點效率。
首先打開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宏技巧,請關注@點易部落,我們會經常分享一些實用的辦公小技巧,我們的口号:小技巧、大作用。