Міністерство науки і освіти України
Національний університет “Львівська Політехніка”
Інститут комп’ютерних наук та інформаційних технологій
	
Кафедра ПЗ
Звіт
З лабораторних  робіт №1,2,3
з курсу «Людино-машинні інтерфейси»
                                                                                         
                                                                      Виконано 		
  Студент групи ПІ-21
                                                                                        Калакун Ярослав		                                                                                            
                                                                Зараховано	
         Тушницький Р.Б.
                                                                                
Львів 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.