Міністерство науки і освіти України
Національний університет “Львівська Політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
Звіт
З лабораторних робіт №1,2,3
з курсу «Людино-машинні інтерфейси»
Виконано
Студент групи ПІ-2
Львів 2008
Тема: Створення макросів для MsWord
Мета: Навчитись створювати макроси для прискорення роботи з MsWord.
Завдання:
Створити макрос для вирахування елементів матриці А за наступним правилом : А[i][j]=3*B[i][j]/Bmax .Ввід організовувати за допомогою InputBox, а вивід за допомогою MsgBox.
Створити макрос який задає параметри для абзацу поточного документа.
3) Створити макрос, який додає користувацьке меню, а всі пункти стандартного меню приховує.
Макрос має створити користувацьку панель та дві кнопки. Перша кнопка має змінювати стиль фрагменту тексту, інша – викликати помічника і продемонструвати роботу з ним.
Теоретичні відомості
В об’єкт Document входять об’єкти
Bookmarks
Characters (Range)
CommandBars
Comments
DocumentProperties
Endnotes
Fields
Footnotes
FormFields
Frames
Hyperlinks
Indexes
InlineShapes
HorizontalLineFormat
ListParagraphs
Lists
ListParagraphs
Range
ListTemplates
ListLevels
Font
Paragraphs
ProofreadingErrors (Range)
Revisions
ReadabilityStatistics
Scripts
Sections
Sentences (Range)
Shapes
StoryRanges (Range
Styles
Subdocuments
Tables
TablesOfAuthoritiesCategories (TableOfAuthoritiesCategory)
TablesOfAuthorities (TableOfAuthorities)
TablesOfContents (TableOfContents)
TablesOfFigures (TableOfFigures)
Variables
Versions
Windows
Words (Range)
Сімейство Paragraphs представляє всі абзаци документа, сімейство Sentences – всі речення, Words – всі слова, а Characters – всі символи документа.
В об’єктній моделі Office всі панелі інструментів і меню представлені об’єктами типу CommandBar. Всі об’єкти CommandBar програми об’єднані в сімейство CommandBars.
Тексти макросів:
Макрос 1:
Dim A(4, 4) As Double
Dim B(4, 4) As Integer
Dim max As Integer
Sub mas()
Dim msg, msg1 As String
For i = 0 To 3 Step 1
For j = 0 To 3 Step 1
msg = "Введіть елемент B[" & i + 1 & "][" & j + 1 & "]=": B(i, j) = InputBox(msg, "Введення масиву В:", 0)
Next j
Next i
max = max_element(B())
msg = "масив A:" & vbCrLf
For i = 0 To 3 Step 1
For j = 0 To 3 Step 1
A(i, j) = 3 * B(i, j) / max
msg = msg & "A[" & i + 1 & "][" & j + 1 & "]=" & A(i, j) & " "
msg1 = msg1 & "B[" & i + 1 & "][" & j + 1 & "]=" & B(i, j) & " "
Next j
msg = msg & vbCrLf
msg1 = msg1 & vbCrLf
Next i
msg1 = msg1 & "max=" & max & vbCrLf
msg = msg1 & msg
MsgBox msg
End Sub
Public Function max_element(BB() As Integer) As Integer
Dim max1 As Integer
max1 = 0
For i = 0 To 3 Step 1
For j = 0 To 3 Step 1
If max1 < BB(i, j) Then max1 = BB(i, j)
Next j
Next i
max_element = max1
End Function
Sub My_macro()
'
' My_macro Макрос
' Макрос создан 01.11.2008 Customer
'
mas()
End Sub
Макрос 2:
Attribute VB_Name = "NewMacros1"
Dim number As Integer
Dim num As Integer
Sub my_macros_for_formatting_paragraph()
Attribute my_macros_for_formatting_paragraph.VB_Description = "Макрос создан 01.11.2008 Customer"
Attribute my_macros_for_formatting_paragraph.VB_ProcData.VB_Invoke_Func = "Normal.NewMacros.my_macros_for_formatting_paragraph"
number = InputBox("Введіть номер абзацу який будете форматувати ", "Введення:", 0)
If (number > ActiveDocument.Paragraphs.Count) Or (number < 0) _
Then MsgBox "Значення виходить за межі кількості абзаців": Exit Sub
'Alignment: вирівнювання абзацу
num = InputBox("Введіть:" & vbCrLf & "1 для вирівнювання по правому краю" & vbCrLf & "2 для вирівнювання по центру" & vbCrLf & "3 для вирівнювання по ширині" & vbCrLf & "4 для вирівнювання по лівому краю", "Введення:", 0)
Select Case num
Case 1
ActiveDocument.Paragraphs(number).Alignment = wdAlignParagraphRight
Case 2
ActiveDocument.Paragraphs(number).Alignment = wdAlignParagraphCenter
Case 3
ActiveDocument.Paragraphs(number).Alignment = wdAlignParagraphJustify
Case 4
ActiveDocument.Paragraphs(number).Alignment = wdAlignParagraphLeft
End Select
'SpaceAfter: відступ знизу
'Збільшуєм інтервал після абзацу (свойство SpaceAfter):
num = InputBox("Введіть інтервал після абзацу:", "Введення:", 0)
If num < 0 Then _
MsgBox "Такий інтервал є неможливий" _
Else: ActiveDocument.Paragraphs(number).SpaceAfterAuto = False: ActiveDocument.Paragraphs(number).SpaceAfter = num
'Збільшуєм інтервал перед абзацом (свойство SpaceBefore):
num = InputBox("Введіть інтервал перед абзацом:", "Введення:", 0)
If num < 0 Then _
MsgBox "Такий інтервал є неможливий" _
Else ActiveDocument.Paragraphs(number).SpaceBeforeAuto = False: ActiveDocument.Paragraphs(number).SpaceBefore = num
'Встановлюєм міжстрічковий інтервал
num = InputBox("Введіть міжстрічковий інтервал:", "Введення:", 0)
ActiveDocument.Paragraphs(number).LineSpacingRule = wdLineSpaceMultiple
ActiveDocument.Paragraphs(number).LineSpacing = LinesToPoints(num)
'Зміна фона абзацу
'Задать дляабзаца штриховку (узор) 15%:
ActiveDocument.Paragraphs(number).Shading.Texture = wdTexture15Percent
'Встановлення відступів
num = InputBox("Введіть відступ з ліва:", "Введення:", 0)
ActiveDocument.Paragraphs(number).LeftIndent = CentimetersToPoints(num)
num = InputBox("Введіть відступ з права:", "Введення:", 0)
ActiveDocument.Paragraphs(number).RightIndent = CentimetersToPoints(num)
'Створити навколо абзацу рамку заданого стилю
ActiveDocument.Paragraphs(number).Borders.OutsideLineStyle = wdLineSyleEmboss3D
' my_macros_for_formatting_paragraph Макрос
End Sub
Макрос 3:
Attribute VB_Name = "NewMacros"
Public Sub my_style()
Selection.Style = ActiveDocument.Styles("Заголовок 2")
End Sub
Public Sub Assistant_sub()
Dim MyBal As Balloon
Dim UserChoice As Integer
Assistant.Visible = True
Assistant.Animation = msoAnimationGreeting
Set MyBal = Assistant.NewBalloon
MyBal.Heading = "Your choice"
MyBal.Text = "ПРЕДСТАВЛЯЮ ТРИ СПОСОБИ ПОТРАПИТИ НА РОБОТУ"
MyBal.Button = msoButtonSetOkCancel
MyBal.Labels(1).Text = "Пішком"
MyBal.Labels(2).Text = "На таксі"
MyBal.Labels(3).Text = "Подумки"
UserChoice = MyBal.Show
Assistant.Animation = msoAnimationCheckingSomething
Select Case UserChoice
Case 1
Set MyBal = Assistant.NewBalloon
MyBal.Text = "А хоть через центр........"
MyBal.Heading = "1 спосіб"
MyBal.Show
Case 2
Set MyBal = Assistant.NewBalloon
MyBal.Text = "Шукаєш найблищу зупинку і поїхав"
MyBal.Heading = "2 спосіб"
MyBal.Show
Case 3
Set MyBal = Assistant.NewBalloon
MyBal.Text = "zzzzzzzzzzzzzzzz"
MyBal.Heading = "3 спосіб"
MyBal.Show
End Select
Assistant.Visible = False
End Sub
Public Sub my_panel()
Dim MyCBar As CommandBar
Set MyCBar = CommandBars.Add(Name:="Panel", Position:=msoBarTop, Temporary:=True)
MyCBar.Visible = True
Dim MyCBut As CommandBarButton
Set MyCBut = CommandBars("Panel").Controls.Add(Type:=msoControlButton)
With MyCBut
.Style = msoButtonCaption
.OnAction = "my_style"
.Caption = "change style"
End With
Dim MyCButHLP As CommandBarButton
Set MyCButHLP = CommandBars("Panel").Controls.Add(Type:=msoControlButton)
With MyCButHLP
.Style = msoButtonCaption
.OnAction = "Assistant_sub"
.Caption = "Assistant"
End With
MyCButHLP.Visible = True
End Sub
Public Sub delete()
CommandBars("Panel").delete
End Sub
Sub show_menu()
CommandBars("Menu Bar").Reset
End Sub
Sub Menu()
Dim MyCBar As CommandBar
Dim MyCon As CommandBarControl
Dim MyMenu As CommandBarControl
Set MyCBar = CommandBars.ActiveMenuBar
Dim i
For i = 1 To MyCBar.Controls.Count
MyCBar.Controls.Item(i).Visible = False
Next i
Set MyMenu = MyCBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
MyMenu.Caption = "My menu"
Set MyCon = MyMenu.CommandBar.Controls.Add(Type:=msoControlButton, ID:=1)
With MyCon
.Caption = "Add_Panel"
.TooltipText = "Add_Panel"
.Style = msoButtonCaption
.OnAction = "my_panel"
End With
Set MyCon = MyMenu.CommandBar.Controls.Add(Type:=msoControlButton, ID:=2)
With MyCon
.Caption = "Delete Panel"
.TooltipText = "Delete Panel"
.Style = msoButtonCaption
.OnAction = "delete"
End With
Set MyCon = MyMenu.CommandBar.Controls.Add(Type:=msoControlButton, ID:=3)
With MyCon
.Caption = "Show"
.TooltipText = "Show other menu"
.Style = msoButtonCaption
.OnAction = "Show_menu"
End With
End Sub
Висновок: Я навчився за допомогою макросів спрощувати і прискорювати роботу в Ms Word.