موضوع ماکرو نویسی در Word علی رغم سادگی ظاهری، وقتی که عملا می خواهیم با آن مواجه شویم، پیچیده و مشکل به نظر می رسد و مهمترین دلیل آن پیپیدگی مدل شیء اکسل در مقایسه با مدل شیء Word می باشد.
به گمانم به جای آموزش قدم به قدم، با مشاهده مثال های ساده و تقلید از آنها در جهت ساخت ماکرو های پیچیده تر می توان سریع تر به موضوع ماکرو نویسی در Word مسلط شد.
در ادامه با چند ماکروی ساده ولی کاربردی آشنا خواهید شد :
ماکروی تغییر تراز افقی پاراگراف
برای تغییر تراز افقی پاراگرافهای متن انتخاب شده با استفاده از ماکرو های Word می توانید از دستور ساده زیر استفاده کنید :
Sub AlignParagraphs()
'Align Left
Selection.Paragraphs.Alignment = wdAlignParagraphLeft
'Align Right
Selection.Paragraphs.Alignment = wdAlignParagraphRight
'Align Center
Selection.Paragraphs.Alignment = wdAlignParagraphCenter
'Align Justify
Selection.Paragraphs.Alignment = wdAlignParagraphJustify
End Sub
ماکروی اضافه کردن کروشه در Word
ماکروی زیر دو طرف متن انتخاب شده در سند Word، براکت (کروشه) اضافه می کند.
Sub AddBrackets()
Dim iCount As Integer
iCount = 1
While Right(Selection.Text, 1) = " " Or _
Right(Selection.Text, 1) = Chr(13)
Selection.MoveLeft Unit:=wdCharacter, Count:=1, _
Extend:=wdExtend
iCount = iCount + 1
Wend
Selection.InsertAfter "]"
Selection.InsertBefore "["
Selection.MoveRight Unit:=wdCharacter, Count:=iCount
End Sub
ماکروی اضافه کردن متن به ابتدای محدوده انتخاب شده :
Sub InsertBeforeSelection()
Dim MyText As String
Dim MyRange As Object
Set MyRange = ActiveDocument.Range
MyText = ""
Selection.InsertBefore (MyText)
MyRange.InsertBefore (MyText)
End Sub
ماکروی اضافه کردن متن به ابتدای محدوده انتخاب شده :
Sub InsertAfterSelection()
Dim MyText As String
Dim MyRange As Object
Set MyRange = ActiveDocument.Range
MyText = ""
Selection.InsertAfter (MyText)
MyRange.Collapse
MyRange.InsertAfter (MyText)
End Sub
ماکروی تغییر Header در Word
یک ماکروی ساده و در عین حال بسیار سودمند در زمانیکه می خواهید عملیاتی را به صورت یکپارچه در محیط Word انجام دهید.
ماکروی زیر متن Header یا سرصفحه سند ورد را با متن دلخواه جایگزین می کند.
Sub ChangeHeader()
Dim MyText As String
MyText = "Header Text !!"
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Range.Text = MyText
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub