235 43 4MB
Russian Pages 360 Year 2006
П
и лови —
soft —
MicroOffice. , -
: : , . (
),
-
—
,
. .И
-
IT, Excel (
: SQL Server, , ;
)
(300—400 -
Excel; Project Central ( Microsoft Project)
)
; Word, .
И,
,
. .К
(
, ,
,
-
,
. А ,
Excel Word), .
-
10
П
В
,
и лови
,
-
. —
,
-
( 30 :
(
1904) ,
Microsoft) Microsoft Official Curriculum (MOC). Microsoft Access : ( 2381), . . -
. .
,
"
Office", .
-
Office Excel, VBA, -
-
-
(
VBA И
). "— Word, Excel, Access, .
"
PowerPoint, Outlook
Project,
А . В
.
И
, VBA,
, -
. ( . В (
)
,
)
,
-
.
. , .
—
.
Э
: К
"
" (
. ),
П
и лови
11
,
-
; ,
, ,
. ("
Excel"), ; Office
, ( -
, Word Application — Document — Selection, Range Excel Application — Workbook — Worksheet — Range). 80% VBA; , ,
Bookmark,
-
.Д
-
. , . . . В Microsoft Office 2003 Office 97
. Office XP.
Office 2000, .
, VBA
Office
-
,
,
, .
, Office,
Microsoft
, VBA.
А ,
А — [email protected],
. Web-
! И, . — www.askit.ru. ). И,
( , .
—
,
ЛА А
1
О ов о и ов в Mеcолплвр Лввеcб 1.1. З ч о в Mеcолплвр Лввеcб
и
и ов
: Office — (
.
,
,
-
). В
, ,
-
: ,
:
. .Ч
,
, ,
,
.И
,
; : .
, ,
( ,
. ,
,
,
. .) ,
,
-
. . ),
:
, ( (
,
, Word)
-
; .В
, ,
,
-
О ов
о
и ов
и в Mеcолплвр Лввеcб
,
13
2%. "В
"
—
,
, В
,
. ,
,—
.
,
Outlook,
-
Project, Excel — Office
, . К
,
,
?К ,
,
-
: ; (
), . .,
,
.
1.2. Ч о
о
ТBA ,
.Ф
.
VBA (Visual Basic for Applications) —
Visual Basic,
Microsoft Office
Microsoft
.
В
, Office VBA. COM, Visual Basic, VBScript, Java, JScript, C++, Delphi . . .NET: VB.NET, C# , ,
Word, :
Dim oWord Set oWord = CreateObject("Word.Application") oWord.Visible = true oWord.Documents.Add oWord.Selection.TypeText ("Привет от VBScript")
: . .В Office. vbs
-
л в 1
14
, VBA — Office. Office, Office:
—
VBA Word,
VBA
Excel,
VBA ( . В
VBA
. .К -
PowerPoint , — хо )
,
:
Microsoft Office — Word, Excel, Access, PowerPoint, Outlook, FrontPage, InfoPath; Microsoft,
Visio
100 CorelWordPerfect Office 2000, AutoCAD
Project;
, . .
,
CorelDRAW
. VBA —
.
, Office
,
•
,
,
: Visual Basic (
—
•
); VBScript (
" VBA). В (VBScript
"
Windows, WebASP, -
Internet Explorer), WebDTS SQL Server, Exchange Server -
VBA
-
. ,
(
.К
), ,
Office
,
:
, VBA
-
. .
,
,
— Microsoft
Office
. ,
VBA
,
, .
,
, VBA
, :
, ,
-
О ов
о
и ов
и в Mеcолплвр Лввеcб
15
,
. VBA, VBA (
VBA, .
,
-
— -
,
), C++ (Add-In)
DLL . .
Word, Excel, Access
VBA
, . .
В
-
,
-
Office. Д
VBA (C++, Java, Delphi)
, ,
.К
-
,
Office (
,
,
. .) .
1.3.
о о о
В
о
и
:
о ов
Microsoft Office ( , ,
Access . Э
FrontPage) -
. Ма о о , . Ма о — —
П е
,— VBA.
я Microsoft Office 2003 .П е вис | ак с | Бе ас с ас с и е яя .Э .
:
—
-
,
, , и кая, я
ве
я, -
,
л в 1
16
.
—
,
-
( . . ).
К
,
VBA. "
"
. ,
. .,
,
-
(
, ФИ
,
, , . .),
. К
, ,
, .
: ,
,
.
,
.
,
,
, (+);
, К
а
, С ви | На
ы , , ка к авиа
К авиа
ы
.
ка. а,
На; ,
,
.В
-
,
На
-
. Д ка к авиа ы,
. Ч
( ,
Microsoft Office, , Word, Excel, PowerPoint,
Project): С
1. В •
я
ви | ак а и ь ак
ак
Нача ь а и ь. В
а(
. 1.1)
а.
:
:
, .
Excel — 64 ;
,
Word — 80
.
-
О ов
о
•
и ов
и в Mеcолплвр Лввеcб
17
-
.В
, —
-
;
•
. В Word — Normal.dot, Excel —
, PERSONAL.XLS ). ,
( •
,
аз . 2.2; и а и .В
,
-
— ,
(
).
Рис. 1.1. Д
2.
За ис
ак
са
-
OK . и ь. ви |
— ак
|
а
ви ь а и ь
, ви ь а и ь.
3. ы(
а
,—
, С ви +),
а ви ь аПа а. С ак
|
ак-
л в 1
18
ак Вы
( . . 1.2) и ь. И
-
,
. . ,
(
С
ви | ак | ак ы, К а Word, Вы и ь. В а ки ю и к ави ( Word 26 ). В ,
и щи
Word) ак
я
ак ы ListCommands к . -
, ,
.Ч
,
VBA -
: -
,
; ,
VBA InputBox()
(
-
); ,
-
. К
,
.
И
,
.
,
,
-
,
— Office. ,
,
-
Office . : Excel В авка | иа а
а,
, Diagram.
,
, !
Excel В авка),
,
И
"( —
( . .
,
Diagram
"
Chart.
А
Excel. VBA , , -
О ов
о
и ов
и в Mеcолплвр Лввеcб
19
),
-
.
1.4. Ч
о о ,
( Visual Basic, , —
.В ак , ы ( . 1.2).
о ,
.
,
— С ви |
Рис. 1.2. Д
И
, ),
ак
ак
|
ак-
сы
: Вы
и ь—
;
а ка —
Visual Basic
-
; и ь— С
а ь— Visual Basic ;
Visual Basic; -
л в 1
20
а и ь; а и а
—
.
К
, ,
Вы
)
.В
(
, ,
и ь—
. . , — , "
. "
, Basic", (
,
,
+, ,
) . .
. "Visual Microsoft Office — +. — , !
,
, ,
, ,
,
. . ,
— ,
. . В Word
В
С ви | На К а ы. ка к авиа
: К авиа
а:
Ка
ии ,
На ак
к ави +, + . ., , : .Э +, Н в . На ачи ь,
ч а и к ави
ак ы ь.
.В
ы,
ка ы( К а Н в
. 1.3). ы— ч а и
. . +, . Э +, , , ,
, -
О ов
о
и ов
и в Mеcолплвр Лввеcб
21
Рис. 1.3.
Тек щее
С ,
я
а
аче ие
. Е
К авиа .
С
: ак .В Excel,
а (
ви
. 1.4), (
а
-
щ
,
.Н (+, +
я .
В Excel
. В
На ак Па а
ка (
С ви | На
| ак ы.
ы,
. .),
ка) -
Па а
)
ы -
, —
-
,
.
К
, ,
-
.А
, ,
,
л в 1
22
,
?
-
,
. Д ,
(
) .
Рис. 1.4. Д
а а е
ы
ак
са
— .
,
-
— .
, ,
1. В 2.
С и_ ак
. Word
ви в.
На С
ы)
:
ка
Па
а ь,
( ). Д Word,
( .В
.
3.
ак ы ь, -
OK
С
). Ч , ви | На Ка
, . -
, Normal.dot,
Word —
ии -
( , ка. В ии
На
ак ,
ка ы
К К
а
ы. ,
,
а
ы, ,
О ов
о
и ов
и в Mеcолплвр Лввеcб
23
я (
чи ь к
а
и
ы
я ка к
а
-
. 1.5).
Рис. 1.5. Д
И
я ка к
а
, , Normal.NewMacros.QueryTable). В . На ка (
( . Д !) , . 1.6).
(
е е ие
— -
. :
а и ь— я—
На
ка); , . .
( .Д ,
, К
и
ва ь
ач к а к
к
— ; В ави ь
ач к
як ;
ки —
-
л в 1
24
Рис. 1.6. К
и ь
я
ач к а к
к —
, ;
Вы
а ь
ач к
як
ки — Word
42 ,
,
. -
; в :
и ь—
, ,
; ьк ,
к
(в
а),
ьк
к
(в /
ю),
, Нача ь );
К
— —
На ачи ь и
к
—
в
и ь; (
ы к —
И
. -
.
, (
). А .
ач к и
,
На
ка.
, -
О ов
о
и ов
и в Mеcолплвр Лввеcб
25
-
:
На
1. Ка
2. В
ии
Н в Н в
3. (
ка (
ви | На
а
ы
ка).
ю.
ю
К
. 1.7)
.
Рис. 1.7. Д
ас
ка
На
4. Д ак
(
я
Д В
С ( . .
ка
ю
и ь вы
ы
ка
ы). чи ь к а ы и я ка к ак ы ). к
В
, (
В Excel На ак ы, : На
С
ка ( аива
а
На (
ка. . 1.8) -
. -
. 1.9).
, С ви | На ая к
а
а
ка) ю
На
.
Excel Ка ии К а ы аива ая к ка ( . 1.10).
л в 1
26
Рис. 1.8.
И
е е ие
Рис. 1.9. П
На
аива
ая к
Д
ка — , На ачи ь ак . . ,
Word,
На и ь вы
а
я
Excel
(
я ка к
ы
аива к .
, .К
,
, -
Word. я чи ь к а ы ая к а а ю. И )
,
О ов
о
и ов
и в Mеcолплвр Лввеcб
Рис. 1.10. С
В Project, Outlook
27
я
Excel
Office (PowerPoint, , Word.
. .)
—
,
:
,
,
,
. , "
"
( —
, ,
-
). .К ,
-
. 5. . : ,
Excel
, Word . 5.
. Excel, . . :
.
, . 1.1.
Word
, -
л в 1
28
Т И я
е
лиц 1.1. ы
К
AutoExec
П
AutoNew
П
AutoOpen
П
ци л
а а
в
и
о ов л Wлоа
скае ся я
Word (
(
я
, AutoClose
П
AutoExit
П
Normal.dot)
Normal.dot)
Word
В Excel Auto_Open, Auto_Close, Auto_Activate
Auto_Deactivate.
Microsoft -
, ,
. ,
Auto:
,
.Д С
, ви |
ак
а
|
ь
,
Office 2003
Ни ки . ,
Word . Normal.dot,
MyMacros
-
.В
,
,
Excel, ,
, Word :
winword.exe /mMyMacros
Office,
, ,
, -
.
З З
и
и
л
о в Wлоа
о о л л в о
Си ация: В . К
о ич
о 1: о о вво
, . 1.11.
О ов
о
и ов
и в Mеcолплвр Лввеcб
Рис. 1.11. С
А АН
29
,
: , (
"
.
."
). -
.
(
. 1.12). ,
, .
Рис. 1.12. В
О в
и
я
я
я
1
Word. В С ви Нача ь а и ь. В а и ь ак а я " " ( ), , ак В х к в (Normal.dot), чи ь ак а и. 2. В На ка К а ы Normal.NewMacros.П и ь
1.
Вы в
и ь.
а ь
ач к .
ак ы ь
як На
ак
а
ак
|
я На а-
. ки, ка.
,
-
. 3. В ( 4.
С
ви |
,
ак
а Word
.
,
а ви ь а и ь ви ь а и ь).
ЛА А
З
2
о
во о о
2.1. О щи
в
Тепсaи Baпеc и
В
,
-
. :
, -
,
,
. (
,
Word Selection
Range).
,
, . Office
. -
Visual Basic,
В
,
,
. В
Visual Basic ,
Д я
.
я , Microsoft Office, я VBA Visual Basic я .В COMя , , Visual Basic, C++, Delphi, Java, VBScript JavaScript, ActivePerl, C#, Visual Basic .NET . . я VBA ( Visual Basic) я Microsoft Office, я Microsoft Office .
З
о
во
о о Тепсaи Baпеc
В
31
Visual Basic, :
Office С
—
ви |
.
ак
ак
Visual Basic; —
+; Visual
Basic (
); ;
ак
.
В
,
Рис. 2.1.
В
Visual Basic ,
я я + ( +).
. 2.1.
Visual Basic
Excel
.П
щ "
",
-
л в 2
32
В
Visual Basic
9
Project Explorer —
:
. Visual Basic. В —
UserForm —
-
.
аз . 2.2;
.
,
-
. —
. 5; .И
Toolbox —
-
. . 5; .Ч
Properties —
; .В
Code —
-
. .
аз . 2.3; Object Browser —
. ,
—
. ;
. 4,
. И
Watch — . Immediate,
-
,
Locals -
. 6, ;
Locals —
. ;
Immediate —
. .
-
: ,
И В
View .
,
, Office . Office — .
. -
Visual Basic VBA .К , ,
,
З
о
во
о о Тепсaи Baпеc
33
, (
VBA, ,
):
-
.
2.2. О о ово и (Project Explorer) и
о
о
ТBA Visual Basic
. :
, +; Project Explorer
Standard;
View | Project Explorer. В
-
Project Explorer VBA. —
Visual Basic Visual Basic Excel К
о Excel,
, -
(Project), PowerPoint . , Word, Project Explorer Word Normal.dot. Excel, Project Explorer PERSONAL.XLS.
Word,
,
Office ( . .),
, )—
( ,
.Д Insert
, Project
Explorer. С а
а ы VBA. В
о
ь—
: (
); (
). Word
(
Normal.dot ) NewMacros ( Excel — Module1), .
-
л в 2
34
В
VBA ,
-
. : (
Project
Explorer). VBA (
VB); .
-
, , ; . ,
,
,
. Мо
а о
— .
.В
, По ьзо а
ь ая
о
, VBA
. а ,
, .
. 5. ( Excel ( "
Project Explorer — о ). В Word)
References, . . , , ,
"
, .
Word
Normal ( . .
Normal.dot), .
,
.
. 4.
о а. Д (VBAProject В
о а Project Project Properties ( Tools | Project Properties).
Project Explorer — Excel) : .Э
, ;
а
о а
З
о
во
о о Тепсaи Baпеc
35
,
,
-
; ,
.
,
. Project Explorer
-
. ,
-
, (
,
Insert | Module. В аз . 2.3.
)
-
.Ч
— (
), Modules. Ч
.
-
, .
,
.
я
, . Е
Normal ( Word)
(
я. Е
—
-
, , PERSONAL.XLS ( Excel).
,
,
. .),
Insert | UserForm. . ,
— (
. 5.
),
VBA.
2.3. Р 2.3.1.
о
о о
о
о
о о
(Code Editor) и
о
о
В . : Project Explorer ( );
, -
л в 2
36
( Project Explorer, View Code;
. .) (
—
View | Code). —
,
, ,
, , — Word. — .
, .
2.3.2.
и о о
В
ов и о о
и о
о
о .В . General. Д
и . ,
, ,
, -
. о
—
о
Declarations — ( ) . ,
2.3.3. З
о ы , .
л
ии
л
и о
и ов
И
. За а а (
и
. Х
, ,
. В
,
.В
)—
, -
,
. Edit ( Edit | Bookmark. Д
), -
, Toggle Bookmark. Ч —
, — .
. .Д
-
З
о
во
о о Тепсaи Baпеc
2.3.4.
о
37
о о
и
В
о
, .
-
. о
—
В
а
о
о о .
VBA(
—
. 4),
.
, , —
. Visual Basic :
. ,
-
,
.В
.А -
( ,
, ),
.
, Properties/Methods
Edit | List +.
Tools | Options ( Options).
Editor
, Auto List Members
Visual Basic ,
.Э
,
-
:
. Д
Edit | Parameter Info
В
, ++.
Auto Quick Info
Editor
Options. (
)
-
, Edit | List Constants ++. К
'='. . 3.
VBA
. Д Edit | Complete Word
+
. -
, .
-
л в 2
38
,
: ,
.И Auto Indent
-
Options; , ; -
.Д Edit Uncomment Block;
Comment Block Sub End Sub
Function, End Function.
,
.
; ,
,
-
. ,
Auto Syntax Check ,
Options.
-
; . +;
+
Full Module View — .
Procedure View. К
,
-
.
2.4. Р
о
о
в о Office
,
-
. В
. В
Standard. В
Visual Basic С авка
—
,
. 2.2. — ( )
, .
-
З
о
во
о о Тепсaи Baпеc
39
, Range
(
,
Range)
.
Microsoft Office : (Microsoft Excel Visual Basic Reference, Microsoft Word Visual Basic Reference . .) — Office; (Microsoft Visual Basic Documentation, Office) — VBA; (Microsoft Office Visual Basic Reference, Office) — Office: , , Windows SharePoint Services . . В ( , Microsoft Access) ( . 2.3) — ADO, SQL . .
Рис. 2.2. С
VBA
Excel
(
Рис. 2.3. С
— Office. Э . 2.4):
,
VBA
Access
-
л в 2
40
Рис. 2.4. С
Excel
Programming Concepts (Ко о а о а я) — , . , Excel , , . .; а а о о о а о о о о я Office: (Collections), (Objects), (Methods), erties) . . , ( , , Range Excel), ,
(Prop.
-
. , . .
, ,
Programming Concepts ;
-
: —
З
о
во
о о Тепсaи Baпеc
41
, .Э
,
, , Office
—
-
(
,
).
,
Office, , .
-
,
,
;
— , , .
-
. ,
И VBA
, ,
:
.В
,
,
-
, Office.
З Р
и л и ов
А АН И .Д
и
о
о
о
л
о
о
2:
: .1 ,
-
: (
Selection.TypeText)
: Dim sInput As String sInPut = InputBox("Вве ите фа и и "За ро а ы ")
ответ тве
о о и
о
ите я",
: Selection.TypeText Text:=(" тв. и
(
о
)
:
Selection.TypeText Text:=(" тв. и
о
, -
ите ь Петрова М. М.") ите ь " & sInPut)
, .
л в 2
42
Н
,
, я Basic ( я InputBox()) Selection) —
О в 1.
и
щ я
. З
я Word (
я
я
.П
Visual TypeText() я -
.
2
Word +. В Microsoft Visual Basic Project Explorer, Normal | Modules | NewMacros, NewMacros . NewMacros. Sub По
2. .
и ь()
,
,
(
:
—
,
):
Sub По и ь() ' ' По и ь Ма ро ' Ма ро а и а 02.05.2004 R ' Dim sInPut As String sInPut = InputBox("Вве ите фа и и ответ тве о о и о ите я", _ "За ро а ы ") Selection.TypeText Text:=" е ера ь ы ире тор:" & vbTab & vbTab _ & vbTab & "Ива ов А. А." Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter Selection.TypeParagraph Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft Selection.TypeText Text:=(" тв. и о ите ь " & sInPut) Selection.TypeParagraph Selection.TypeText Text:="т. 55-55" End Sub
3.
+, Word. В
, , .
+, , -
ЛА А
3
и о
и и о ции ТBA
3.1. О
ов
и
и
, ,—
VBA.
,
,
,
-
: ,
.К
VBA ,
, , -
. Д
,
Visual Basic, .
,
(C++, Java, Delphi, VBScript
JavaScript, Perl .А , , -
. .) ,
, ,
, . —
VBA
. , VBA. VBA, Visual Basic for Applications), Visual Basic.
(
-
л в 3
44
: VBA
; , (')
REM;
("); VBA ( ) — 255
,
,
-
; —
(
C, Java, JavaScript,
,
); ( 308
-
). :
MsgBox "Провер а 1" : MsgBox "Провер а 2"
: MsgBox "Соо ще ие & vUserName
3.2. О
о ь овате
" _
о
а о —
VBA. .
, VBA А (+),
VBA (*),
(−), (^).
: :
, 2^3 = 8;
(\). Д .
)
7. Ч (/),
,
(Mod). Д .
, , 5 Mod 2 = 1.
VBA — Let nVar = 10
: nVar = 10
(
, 5\2 = 2;
.
:
и
и и
о
о
ции ТBA
45
. "
-
10",
nVar
: If (nVar = 10)
"
10".
nVar
,
-
. VBA (=). ,
8:
, If (nVar = 10);
(>)
,
( 10);
(>=) ().
(= 10);
, If (nVar10); (Is).
, .
, If (obj1 is obj2);
(Like).
, . True
False (
(
)
). : ; ; / —
-
.
,
,
Option Compare Text
:
Like Выра е ие1 Like Выра е ие2 Выра е ие1 —
,
Like.
В (
VBA, Выра е ие2 — . 3.1).
: And —
И. Д
Or —
И И. Д
; ;
л в 3
46
.В
Not —
True,
. В
Xor — Eqv —
True,
E1 Xor E2 — False;
E2 = True,
E1 = True
;
,
True,
; Imp — E2 = False,
, E1 Imp E2 — True.
False,
E1 = True
And, Or, Not,
-
. Т
лиц 3.1. По
с а в ч ы си в
овоч
и вол
л о
о
Like
З аче ие я
#
0
9
*
я
(
)
? [a,b,c] [!a,b,c]
,
VBA . В VBA (&),
, . . — (+)
(&).
:
(&)
—
;
(+)
-
Null.
Null
(&): MsgBox "Соо ще ие
о ь овате
" & vUserName
: ,
, .
-
, —
.
.
и
и и
о
о
ции ТBA
3.3. П П
47
и и
х
ы —
.
.Д .К
" VBA
—
-
, ,
"
. :
Dim nMyAge As Integer nMyAge = nMyAge + 10 MsgBox nMyAge
.
-
4
-
: Dim nMyAge As Integer
. . В VBA
Dim —
. Dim — Dim
. ,
,
-
—
.
Private —
VBA
,
-
Dim.
(
).
Public —
.
, ,
Dim.
Static —
.Э
-
, , .
-
.
: Static nVar1 As Integer nVar1 = nVar1 + 1 MsgBox nVar1
, Dim.
-
л в 3
48
В
(nMyAge) — ,
)
(
.
(
-
VBA
,
,
,
. .):
; (
—
(
.
); — 255
;
аз . 3.3); ( , )
. VBA
,
—
. Ч
-
(
Microsoft, Charles Simonyi, ): , .
,
-
:
• str (
• fn (
• sub —
s) f)
— String,
—
; ;
;
• c(
)—
• b — Boolean,
• d—
• obj ( • n—
(True
; False);
; o)
—
; ;
,
:
MsgBox objMyDocument.Name Sub CheckDateSub()
VB
Const,
,
, ,
COMPANY_NAME.
и
и и
о
о
ции ТBA
49
(
аз . 3.4).
—
-
Const
(As Integer) — ,
. . В VBA
: о ы :
• Byte —
0
• Integer —
255;
−32 768
• Long —
−2 147 483 648
• Currency — 4
19 29 0
,
(Double
я
.Е
.К Variant
2
, Dim n As Decimal) я
Variant Variant Variant
Decimal, VBA я CDec().
, щ
( 65 400
( я (Date —
Decimal (
(Dim n),
о о ы (String
о
-
);
. Ч
Decimal, я
о
28
(
Double —
я
а а
,
));
П щ VBA
2 147 483 647;
;
• Decimal — • Single
32 767;
01.01.100
Decimal
я
2 ));
-
-
)
31.12.9999);
(Boolean —
True
ы (Object —
Variant —
я
False);
); ,
-
. , Type.
л в 3
50
(
—
).
,
-
: —
, .
-
—
-
,
-
; , (Single
Double).
,
,
; ((%) — Integer, ($) — String :
. .).
' Dim nVar1 As Integer
: nVar1% = nVar1% + 1
. .
,
: Dim nVar1
В
Variant.
В
,
VBA
.
-
, nVar1 = nVar1 + 1 MsgBox nVar1
.
-
,
!И
Variant.
.
:
: (
,
-
); , . :
,
Excel
-
и
и и
• •
о
о
ции ТBA
51
: Dim oWbk As Workbook Set oWbk = Workbooks.Add
: Set oWbk = Workbooks.Add oWbk
. В
.Д
-
(
):
Option Explicit
, Tools | Options,
Require Variable Declarations (
Options Editor). ,
,
:
Dim n n = n + 1 MsgBox
.
. :
.В
N,
n—
. VBA,
,
Variant,
.В
. ,
,
:
Dim nVar1 As Integer, s1 As String
: nVar1 = 30
, : nVar1 = nVar1 + 1
"
. -
Option Explicit
В
-
", "
".
л в 3
52
: : sVar1 = "Hello"
/
"
" (#):
dVar1 = #05/06/2004#
, "
/
" : 05
— (
.А
, 06 — )
,
А
-
)
-
)
-
; , (&H): nVar1 = &HFF00
Д
( (&O).
В
: — 0; — "" ( ); — ASCII 0 (
);
Variant —
Empty.
( . . IsEmpty(); Object —
З Р
о
П 1. 2.
и
(
л
).
о
о
л о иио
о
о
и
3.1:
вка: В
Excel A1, A2 A3 Visual Basic Excel ( . аз . 2.2).
C:\LabVariablesOperators.xls. .
и
и и
о
3.
о
ции ТBA
53
Tools | References Microsoft Word 11.0 Object Library.
4. В
:
Public Sub MsgBox MsgBox MsgBox
FromExcelToWord() Range("A1").Text Range("A2").Text Range("A3").Text
Dim oWord As Word.Application Dim oDoc As Word.Document Set oWord = CreateObject("Word.Application") oWord.Visible = True Set oDoc = oWord.Documents.Add() oDoc.Activate oWord.Selection.TypeText "В тав яе ы те т" End Sub
Э
A1, A2
Word "В тав яе ы те т". 5. , А АН И яе ы
О в И
те
A3,
.
: , A1, A2
т"
и
3.1 :
Public Sub FromExcelToWordAnswer() Dim sA1, sA2, sA3, sText As String sA1 = Range("A1").Text sA2 = Range("A2").Text sA3 = Range("A3").Text sText = sA1 + " " + sA2 + " " + sA3 Set oWord = CreateObject("Word.Application") oWord.Visible = True Set oDoc = oWord.Documents.Add() oDoc.Activate oWord.Selection.TypeText sText End Sub
A3
.
"В тав-
л в 3
54
3.4. о Ко
а
ы— ,
, VBA-
,
. К
-
: ,
;
-
(
,
),
—
.
В VBA
Const:
Const COMP_NAME As String = "Microsoft"
,
-
. К (
,
,
,
, .
. .). ,
-
:
UserForm1.BackColor = vbGreen UserForm1.BackColor = 65280
,
,
-
. В VBA
: , , . . VBA: Microsoft Visual Basic Documentation | Visual Basic Language Reference | Constants. ( Miscellaneous Constants) : vbCrLf , : ,
,
MsgBox "Первая
тро а" + vbCrLf + "Вторая
Office,
3.5. О и а о ы
тро а"
. 10—15.
о
лов о о о оо
лов о о хо хо а —
.
:
-
(
-
и
и и
о
о
ции ТBA
-
55
) : If...Then
3.5.1. О
-
. В VBA Select Case.
о If ... Then
If...Then —
.
):
( овие Then Кома ы1 [ElseIf овиеN Then Кома ыN] [Else Кома ы2] End If
If
: овие —
, Кома
, В
. ы1,
— Кома ы2;
овияN —
,
, Кома
ыN.
овияN
(
Д
. -
),
(
ElseIf)
,
,
Select Case
аз . 3.5.2).
(
.
:
If...Then
-
-
:
If nTemperature < 10 Then MsgBox "На еть рт " End If
,
, :
If nTemperature < 10 Then MsgBox "На еть рт " Else MsgBox "На еть ветров " End If
-
л в 3
56
(
-
): If (nTemperature < 10) And (bRain = True) Then MsgBox "На еть рт и в ять о ти " End If
,
False,
(
ElseIf):
If (bIGoInCar = True) Then MsgBox " еть я я а и ы" ElseIf nTemperature < 10 Then MsgBox "На еть рт " Else MsgBox "Мо о и ти в р а е" End If
В
,
bIGoInCar — True False,
Boolean
-
: If bIGoInCar Then ... If...Then: Then
.
If
, ; ,
-
,
Then,
If
End If
: If nTemperature < 10 Then MsgBox "На еть
рт
" Else/ElseIf,
,
End If
-
; If...Then If...Then If MyVar = 5 Then MsgBox "MyVar = 5" If MyVar = 10 Then MsgBox "MyVar = 10" End If End If
-
.И
; :
и
и и
3.5.2. О
о
о
ции ТBA
57
о Select Case -
Select Case
,
. :
Select Case Выра е ие Case овие1 Кома ы1 [Case овиеN Кома ыN] [Case Else Кома ы2] End Select
: Select Case sDayOfWeek Case "По е е ь и " MsgBox "Са ат и Case "Втор и " MsgBox "Са ат и Case Else MsgBox "На этот End Select
и ата" ор
о
е ь
а а
ты" и е о
е
ре
отре о"
Select Case:
: Case "По е е ь и "
: Case sDayOfWeek = "По е е ь и "
.
:
, Case 0 To 5, 15, Is > 55
0
" ,
5
15,
—
Is
.
55". VBA
Case
, ,
Or,
. . -
;
л в 3
58
(0 To 5) (
0
3.5.3. О
5).
о GoTo
GoTo —
, -
. :
GoTo GoTo EngineNotStarted ... EngineNotStarted: MsgBox " е а етро" ... EngineNotStarted: —
,
( ),
. Э
В
GoTo.
, ,
" И
"
GoTo
,
GoTo
,
З Р
о
П 1. 2.
и
л о
.Ч . аз . 3.6)
о о
о
. ,
GoTo Do While...Loop (
-
.
GoTo
-
GoTo
.
и
л о о лов о о
3.2: хо
вка: Excel Visual Basic .
3. В
C:\LabCondConstructions.xls. Excel :
Public Sub IfThenSub() Dim nResult As Integer nResult = MsgBox("На ите о ", vbYesNo, " о оо ще ия") ThisWorkbook.Worksheets(1).Range("A1").Value = _ "Вы а а и о : " & nResult ThisWorkbook.Worksheets(1).Range("A1").Columns.AutoFit End Sub
и
и и
4.
о
о
ции ТBA
,
.Э
A1 а а и
"Вы
, П
щ я MsgBox().
А АН И
59
щ
,
о
.
я
я,
в
-
щ
3.2, А: , (
о : Да"). И If...Then...Else.
И
-
: 6",
, "Вы
а а и
к а а ию 3.2, А: :
Public Sub IfThenSubAnswer() Dim nResult As Integer nResult = MsgBox("На ите о ", vbYesNo, " о оо ще ия") If nResult = vbYes Then sResult = "Да" ElseIf nResult = vbNo Then sResult = "Нет" Else sResult = "Неи ве т ая о а" End If ThisWorkbook.Worksheets(1).Range("A1").Value = "Вы а а и о & sResult ThisWorkbook.Worksheets(1).Range("A1").Columns.AutoFit End Sub
А АН
: " _
3.2, : :
nResult = MsgBox("На
ите
о
", vbYesNo, "
о
оо ще ия")
: nResult = MsgBox("На ите
о
", vbAbortRetryIgnore, "
И
, "Прервать", "Повторить" Select Case.
"Про
тить",
.И
о
оо ще ия")
A1 , -
л в 3
60
в
к а а ию 3.2, :
И
:
Private Sub SelectCaseAnswer() nResult = MsgBox("На ите о ", vbAbortRetryIgnore, " оо ще ия") Select Case nResult Case vbAbort sResult = " т е ить" Case vbRetry sResult = "Повторить" Case vbIgnore sResult = "Про тить" Case Else sResult = "Неи ве т ая о а" End Select ThisWorkbook.Worksheets(1).Range("A1").Value = "Вы а а и & sResult ThisWorkbook.Worksheets(1).Range("A1").Columns.AutoFit End Sub
3.6. Р Ц
о
ци л
ы
о
о
: " _
и ,
.
—
,
, For...Next: For iCounter = 1 to 10 MsgBox "С ет и : " & iCounter Next
Ч
,
, Step:
For iCounter = 1 to 10 Step 2 MsgBox "С ет и : " & iCounter Next
: For iCounter = 10 to 1 Step -2 MsgBox "С ет и : " & iCounter Next
-
и
и и
о
о
ции ТBA
61
Д
For...Next
Exit For: VStop = InputBox("Вве ите а е ие о та ова") VInput = CInt(VStop) For iCounter = 1 to 10 MsgBox "С ет и : " & iCounter If iCounter =VInput Then Exit For Next
VBA
-
-
—
,
. . Д
Excel, , For Each...Next: For Each oWbk in Workbooks MsgBox oWbk.Name Next
: For Each oWbk in Workbooks If oWbk.Name = "Сво а.xls" Then Set oMyWorkBook = oWbk Exit For End If Next
В ( . .
Workbooks
Excel), ,
а.xls",
"Сво
. К
—
, ,
, -
,
:
Set oMyWorkBook = Workbooks("Сво
а.xls")
-
For Each...Next
. :
, — Do While...Loop
К
:
Do While...Loop
,
:
.В
Do Until...Loop.
-
-
л в 3
62 Do While MyVar < 10 MyVar = MyVar + 1 MsgBox "MyVar = " & MyVar Loop
—
:
,
, ,
. .
Е
я
+.
, ,
. 3.1,
( (Debug).
(End)
Рис. 3.1. В
В
Continue),
-
+
— Do Until...Loop. В :
, ,
.
Do Until MyVar >= 10 MyVar = MyVar + 1 MsgBox "MyVar = " & MyVar Loop
, : Do MyVar = MyVar + 1 WScript.Echo "MyVar = " & MyVar Loop While MyVar < 10
В
,
,
,
. Exit Do.
и
и и
о
о
ции ТBA
В VBA , Visual Basic. Ф
63
While...Wend.
Э
-
—
,
Do While...Loop: While My Var < 10 MyVar = MyVar + 1 WScript.Echo "MyVar = " & MyVar Wend
3.7. Ма
ив ы
.В , . :
Dim MyArray(2) As Integer 2—
(upper bound).
0. К
(lower bound) ,
,—
-
0
.
. ,
( ,
)
,
1,
-
: Option Base 1
В
,
:
Dim MyArray(2)
В
Variant.
, ,
(
, Integer
String).
( )
:
MyArray(0) = 100
А MsgBox MyArray(0)
:
—
-
л в 3
64
,
,
:
Dim MyArray(4, 9)
В
, ( ). В VBScript .
60
,
,
а .Д
Ч
,
, -
: ' о ' и
Dim MyArray() ReDim MyArray(4)
К
яв яе а ив е вер е яе ра ер а ива
е
ра ицы
,
ReDim
.Ч Preserve:
,
-
ReDim Preserve MyArray(7)
,
, —
Preserve
. : Dim MyArray MyArray = Array(100, 200, 300, 400, 500)
—
.
Erase: Erase MyArray
, —
(
)
. В Д
,
UBound() ( , и мере-
ие UBound(имя_Ма
К
.
): ива [, и мере ие])
,
. В
VBA
и
и и
о
о
ции ТBA
65
. Ко
Office , , Document,
(
Word . . )
—
. -
Documents
, Worksheets
,
(
Excel — ) . . К
Workbooks
: ( ,
Add()
Count
, -
). Д
Item()
.
З Р
о
П
и
л ци л
о и
о
л
о
о
3.3:
вка:
1.
C:\LabLoops.doc. В .
Word
2.
Visual Basic
-
. А АН
3.3, А: ForNextSub(),
10 в
1
к а а ию 3.3, А:
И
:
Public Sub ForNextSub() Dim i As Integer For i = 1 To 10 MsgBox i Next End Sub
: Public Sub ForNextSub2() Dim i As Integer i = 1 Do While i 1 Then Debug.Print "Диа а о е е End If
ы и о
Borders —
а тя и" Borders,
. Cells —
,
,
Worksheet.
,
Range
Д
,
-
: Dim oRange, oRange2 As Range Set oRange = Range(Cells(2, 2), Cells(5, 3)) Set oRange2 = oRange.Cells(1, 1) 'В е то A1 Debug.Print oRange2.Address 'Провер а Row
о
ае
ы
Rows, Column
а B2 Columns.
Characters —
:
, .
, ,
A1 :
-
П о
и ов
и в Eфcби
259
Dim oRange As Range Set oRange = Range("A1") oRange.Value = "Мо те т" oRange.Characters(1, 1).Font.Color = vbRed
, Value —
.
Count —
. .
CurrentRegion —
,
,
,
-
, (
,
).
Range,
,
( . . ). ,
-
, , :
Worksheets(" и т1").Activate ActiveCell.CurrentRegion.Select
,
, ,
.
Dependents —
Range
),
(
,
-
, .
— .
,
,
,
:
Worksheets(" и т1").Activate ActiveCell.Dependents.Select
Ч Precedents.
,
Ч
, DirectPrecedents.
DirectDependents End —
. Range,
В
,
. -
. Errors —
,
Errors Error,
.
-
л в 11
260 Font — Font,
Word, (
,
,
. .).
FormatConditions —
,
-
, . Formula —
Range.
.В
, (
Д
, )
. -
, . : Worksheets(" и т1").Range("A3").Formula = "=$A$1+$A$2" FormulaHidden —
.
.
HasFormula —
(
).
Hidden —
.
, ,
. Interior —
,
. .
Item —
Range,
. Locked —
.
Name — Name.
В авка |
-
я.
Word.
Bookmark Next —
.
, -
, —
.
NumberFormat —
ч
. ки
Чи
Ф
а |
.
Offset —
-
Range
.
,
П о
и ов
и в Eфcби
261
, : Worksheets(" и т1").Activate ActiveCell.Offset(rowOffset:=-3, columnOffset:=-3).Activate Orientation —
. .
,
,
-
:
oRange.Orientation = -45 PageBreak —
.
:
Worksheets(" и т1").Rows(50).PageBreak = xlPageBreakManual Pivot... —
( аз . 11.8.
).
PivotTable
-
QueryTable — QueryTable —
, .
аз . 11.7. Range —
-
QueryTable
,
, .
-
. Resize —
.
, :
oRange.Resize(oRange.Rows.Count + 1, oRange.Columns.Count + 1).Select ShrinkToFit —
, . Style —
Style,
.
Ф
Style, Text — String. Д
-
, а | С и ь. .
Range
Validation —
Validation,
.
Value —
Range.
(
,
-
л в 11
262
)
. —
Value2, Currency
Date. WrapText —
.
И
.
Range Activate() —
. AddComment() —
. ,
.Э
, . В авка | П и
-
ча и .
AutoFill() —
( -
, : 3, 4, 5
1 2, . .).
AutoFit() —
,
. , ,
.
AutoFormat() —
,
а | Ав-
Ф
а .
BorderAround() —
. Clear... —
,
,
. .
Consolidate() —
(
)
,
-
. Copy() —
.А
.
, Cut(),
. CopyFromRecordset() — ADO.Recordset
, Excel,
. DataSeries() —
, .
-
П о
и ов
и в Eфcби
263
. 1
,
,
.
Delete() —
.
-
, . Dirty() —
,
" .Э ,
Excel
". .
Calculate(). Fill... FillRight())
(FillDown(),
FillUp(),
FillLeft(),
— .
Find() —
Range,
, .
,
, , . .
FindNext() Find(),
,
FindPrevious()
.
GoalSeek() —
Excel
С
.
ви | П
а а
Insert() —
а. ,
. Justify() —
. ,
-
(
).
Merge() —
. —
-
.
UnMerge(). Parse() —
(
,
PasteSpecial() —
). ,
,
Copy()
, (
,
Cut().
, ,
. .).
-
л в 11
264 PrintPreview() —
PrintOut()
. Replace() —
,
Find().
-
. Select() —
.
Excel
Selection Range,
,
. Show() —
,
-
. ShowDependents() —
,
-
(
)
.
— ShowPrecedents().
ShowErrors() —
.
Sort() —
. -
. SortSpecial() —
.
Speak() —
, (
,
). К
,
Excel
. SpecialCells() — Range,
,
,
(
,
,
,
,
,
) ,
.
-
Range,
,
:
Set oRange2 = oRange.SpecialCells(xlCellTypeBlanks) oRange2.Select 'Проверяе , та и это SubTotal() —
(
-
). Table() —
, ,
.
.
TextToColumns() —
.
,
.
П о
и ов
и в Eфcби
265
11.7. олл ци QueryTables ио QueryTable Д Application, Workbook, Worksheet
Range.
, -
ADO.Recordset
Excel,
VBA Excel
.
-
, .
,
QueryTable,
. PivotTable
аз . 11.8
Chart
11.9. QueryTable —
.Э а ы |
ва ь а ы . ,
, Excel их а ых |
в
и
-
QueryTable
, (
Excel
,
,
,
"
. .). QueryTable ,
" .В
,
Excel
( Change
Worksheet),
"
-
Excel, ,
-
Access. В "
Excel. К
, , ( .
QueryTable QueryTables, Worksheet) QueryTables
,
. Add(), QueryTable
). Э
(
-
: Connection — Variant). В
QueryTable
( :
л в 11
266
•
OLE DB
•
.
. 9);
Recordset,
DAO. •
ADO
Recordset, QueryTable. QueryTable;
QueryTable
QueryTable
(
);
•
•
ODBC (
; WebDQY IQY). Excel С а ь а .
Microsoft Query ( а
Destination — Range,
ы |
в
их
а
ых |
QueryTable.
,
.
SQL —
SQLЭ
,
ODBC.
QueryTable.
К
, Recordset.
QueryTable
В ,
(
Recordset.
Recordset),
,
К (
Northwind.Customers,
аз . 9.5):
QueryTable Recordset
Dim cn As ADODB.Connection Set cn = CreateObject("ADODB.Connection") cn.Provider = "SQLOLEDB" cn.ConnectionString = "User ID=SA;Password=password;" _ & "Data Source = LONDON1;Initial Catalog = Northwind" cn.Open Dim rs As ADODB.Recordset Set rs = CreateObject("ADODB.Recordset") rs.Open "select * from dbo.customers", cn Dim QT1 As QueryTable Set QT1 = QueryTables.Add(rs, Range("A1")) QT1.Refresh
Excel
-
П о
и ов
и в Eфcби
267 QueryTable
QueryTable.Refresh().
-
QueryTable
. И
-
QueryTable
. BackgroundQuery —
,
-
, .
True.
Excel
В False
,
Excel
-
. CommandText —
SQL, . .
,
.
SQL
(
.
) QueryTable CommandType —
SQL-
.
Recordset
(
CommandText
,
OLAP
. .).
, -
Recordset
. Connection — Add() Recordset
, QueryTables.
.
Destination —
,
Add().
Range, QueryTable.
В ,
QueryTable
. EnableEditing —
,
QueryTable.
True. QueryTable.
False,
EnableRefresh — QueryTable,
, (
Recordset).
FetchedRowOverflow —
True, Excel ( . .
, ,
65 536
).
, ,
, . FieldNames —
.
QueryTable.
True —
.
л в 11
268 MaintainConnection —
, .
-
True —
.
False,
. Name —
Св
(
QueryTable
, ва иа а
а а
В
ых).
и
а
-
ы
ExternalData_
омер. Parameters —
Parameters
). В Recordset. PreserveFormatting —
PreserveColumnInfo
(
,
(
-
,
,
-
. .)
QueryTable.
.
QueryType — QueryTable: Recordset,
, , SQL-
. .
-
. Recordset —
Recordset,
-
QueryTable,
QueryTable а р Refresh()).
о (
-
Refreshing —
-
True
. ,
CancelRefresh().
RefreshOnFileOpen —
, (
). RefreshPeriod —
,
.
QueryTable
0, . . RefreshStyle —
. ,
, .
QueryTable ResultRange —
К
.Э
,
,
QueryTable.
,
Excel , ,
). Ч
-
QueryTable,
( ,
-
П о
и ов
и в Eфcби
269 Refresh().
QueryTable
,
,
.
-
—
:
QT1.ResultRange.Select
А
QueryTable
-
: Set c1 = Sheets(" и т1").QueryTables(1).ResultRange.Columns(1) c1.Name = "Column1" c1.End(xlDown).Offset(1, 0).Formula = "=SUM(Column1)" RowNumbers —
,
-
,
QueryTable. QueryTable ( ), QueryTable.
, SaveData — QueryTable,
,
, Excel.
True.
,
В False , -
. SavePassword —
,
-
( ODBC).
False,
-
. SourceDataFile —
Server)
(
Д). Д
Access, DBF ( SQL
-
Null. Text... —
-
,
QueryTable. Web... —
Web-
,
-
.
Refresh(), CancelRefresh()
-
Delete()
. ,
QueryTable ResetTimer() SaveAsODC() —
Microsoft Query ( ).
Recordset,
: BeforeRefresh
QueryTable
-
AfterRefresh.
.
л в 11
270
11.8. Р о о во (о PivotTable)
и
лиц
и
В .
(raw data)
, (
),
— . . ,
,
,
SQL.
,
-
.И :
-
Data Warehouse, OLAP,
— .
OLAP
, (
,
)
. "
".
, ,
, SQL,
, . .
(
-
)
"
-
-
". К
.Д
, OLAP SQL Server Analysis Services. Д а ,
Св ы | Св ,
OLAP Microsoft, Oracle, IBM, Sybase
OLAPExcel ая а ица ( ая а ица), ,
Excel PivotTable —
Microsoft PivotTable
-
— Pivot Table. , PivotTable. OLAP, , -
. Panorama Software, Excel.
. .
-
-
.В
П о
и ов
и в Eфcби
271
Excel. Д .
,
,
-
.В
,
. ,
,—
PivotCache,
,
OLAP.
PivotCache
QueryTable. Д PivotCache. Add()
PivotTable PivotCache PivotCaches:
Dim PC1 As PivotCache Set PC1 = ActiveWorkbook.PivotCaches.Add(xlExternal) PivotCaches —
,
,
,
Add().
Э
: SourceType —
,
-
.
PivotTable
Excel, PivotTable
,
, OLAP
. .
, -
— , Microsoft Analysis Services). В xlExternal.
(
SourceData —
,
,
xlExternal.
, PivotTable.
-
Range.
—
PivotCache.
,
К
QueryTable,
-
. . ADOConnection —
ADO.Connection,
-
.И .
Connection — QueryTable. Recordset,
, ,
, WebOLAP
,
Microsoft Query. Ч (
-
л в 11
272 Recordset,
—
,
OLAP ).
FoodMart (
Analysis Services)
LONDON
: PC1.Connection = "OLEDB;Provider=MSOLAP.2;Data Source=LONDON1;" _ & "Initial Catalog = FoodMart 2000" CommandType
CommandText —
,
,
.
,
-
,
Sales
: PC1.CommandType = xlCmdCube PC1.CommandText = Array("Sales") LocalConnection —
(
Excel. К
cub), "
,
"
-
—
. .
MemoryUsed — PivotCache.
, PivotTable
,
PivotCache
0.
, .
OLAP —
True,
OLAP.
PivotCache
.И
OptimizeCache —
, OLE DB
.Д .
-
PivotCache QueryTable,
. PivotCache —
(
PivotTable).
CreatePivotTable().
—
Э
:
TableDestination — Range,
.
. TableName —
. "Сво
ая а
, ица1".
П о
и ов
и в Eфcби
273
ReadData —
True,
-
. , . DefaultVersion —
.
-
. .
: PC1.CreatePivotTable Range("A1")
.В
, ,
-
: о а
ь
о
о —
о а
ь
о —
о а
ь
а (
,
; ,
, );
ь а ых — ,
.
),
( .
, .К
, .
", ;
ы— -
о а
(" ),
, -
. Э
CubeField.
.
— Orientation, ,
,
:
Customers
PT1.CubeFields("[Customers]").Orientation = xlColumnField Time —
:
PT1.CubeFields("[Time]").Orientation = xlRowField Product —
:
PT1.CubeFields("[Product]").Orientation = xlPageField
,
,
Unit Sales (
):
PT1.CubeFields("[Measures].[Unit Sales]").Orientation = xlDataField
л в 11
274
,
.
-
— .
,
,
Quarter
Time
). К
(
-
,
,
,
,
. 1997 .
Time PivotField
PivotItem:
PT1.PivotFields("[Time].[Year]").PivotItems("[Time].[1997]"). DrilledDown = True
11.9. Р
о
и
и (о
Chart) . А
Excel —
,
. (
,
)
.
Excel , (
В авка |
иа
. а
Excel
а),
Chart. В
(Chart) Excel
Diagram,
В авка | Сх
( , а ич кая ,
Excel а а).
иа
Excel —
. Д
Excel
Chart.
В
: Dim oChart As Chart
Д
. —
Add()
Charts: Set oChart = ActiveWorkbook.Charts.Add(, ActiveSheet)
В
, ,
,
. Ч
, .
П о
и ов
и в Eфcби
275
(
)— ,
-
В
SetSourceData(). Range (
). В
(
)
—
,
,
.
,
: oChart.SetSourceData Sheets(" и т1").Range("A1:A10")
В
,
.Д
, -
.
( "
). Д
", . . ChartType,
73
.
,
,
:
oChart.ChartType = xlLineMarkers
—
.Д Series —
,
Values
-
(
Range): Dim oSeries As Series Set oSeries = oChart.SeriesCollection.NewSeries oSeries.Values = Worksheets(1).Range("B1:B10")
, ,
,
. -
. ,
, Location.
,
,
:
oChart.Location xlLocationAsObject, " и т1"
,
-
Location
(xlLocationAsNewSheet — , xlLocationAsObject — — , ,
),
. Excel,
, . . -
. ,
Location,
, -
л в 11
276
,
. Chart
"Automation Error".
Location
.В
, ,
,
-
:
Dim oSeries As Series Set oSeries = _ Worksheets(1).ChartObjects(1).Chart.SeriesCollection.NewSeries oSeries.Values = Worksheets(1).Range("B1:B10")
,
,
. Chart.
ChartArea —
ChartArea,
,
-
, (
Font, Interior
. .).
, ,
, -
PlotArea.
. , Left
Top, Height,
ChartArea.
Width
ChartTitle —
, (
Font, Border
,
Text,
. .).
ChartType —
,
.
-
. HasDataTable —
True,
(
)
,
-
. DataTable,
.
HasPivotFields
HasLegend,
HasTitle.
Name —
(
Excel). "Диа ра а1", "Диа ра а2"
. .
SizeWithWindow —
True,
, .
False.
-
П о
и ов
и в Eфcби
Tab —
277
,
. Excel
( ,
).
,
:
oChart.Tab.Color = RGB(0, 255, 0) Visible —
. .
Д
Chart. Activate() —
.
( . .
).
ApplyCustomType() —
( ). ApplyDataLabels() —
.Э
, (
-
. .). Axes() —
,
. .
ChartWizard() —
-
, . , . Copy() —
). Д
, Location()
,
.
,
Word
. Export(),
,
Delete() —
.
Evaluate() —
, .
-
Move().
CopyPicture() —
, — ,
(
.
л в 11
278
. Э
PrintOut() —
,
.
Refresh() —
,
,
. Select() —
(
). ).
(
Deselect()
SetBackgroundPicture() —
.К
"
"
,
.
SetSourceData() —
,
-
,
.
Д
. "
Chart
, ,
"— -
,
,
. ., .
11.10.
и о
Eфcби
В Excel
,
.Д .
. Excel —
CellFormat
,
,
. . ,
-
. . FormatCondition. ListObject —
(
Office 2003),
( -
— , Excel
). SharePoint Portal Server. Validation
. Watch
ь
ач
(
и ) .
С
ви |
ак
.
| П ка а ь к ,
-
П о
и ов
З П и и
и в Eфcби
и
А АН В
279
л о о и Eфcби л х
л
о ли
о
и
11: о ции
: ,
,
овары оре , C:\Program Files\Microsoft Office\OFFICE11\SAMPLES. В : Ко
овара —
-
;
Мар а —
;
Це а — НаС
-
;
а е—
;
Ми и а ь ы За а
— . ,
, ;
По тав иПре раще ы —
. ,
, .
В
. овары
,
-
. В 1.
Excel,
:
Excel
-
. 2.
Excel
-
:
• "За а ать товара, т " — НаС а е. В ,
Ми и а ь ы За а
.Э
-
, Ми и а ь ы За а , По тав иПре раще ы
• "Стои о ть
а а а" —
НаС а е, False;
. Це а.
Э
-
л в 11
280
, Ми и а ь ы За а В
НаС
,
( я
.
,
,
) я Excel ( щ я
,
я
—
я
а е.
SQL,
).
3. В :
• " щая тои о ть товаров а , НаС
а е
а е" —
Це а
• " щая тои о ть товаров
-
(
); а а
Стои о тьЗа а а.
"—
, . 11.2. И
,
. 11.3.
Рис. 11.2. П
Рис. 11.3. П
я
П о
и ов
и в Eфcби
О в
и
1.
ы
ав
ия,
281
11 Excel,
К
Excel. Д
Э ка ,
. 2.
Св
Э
ва (
ы
Caption
"По
Font,
3. Щ
х
ы
ав
ить
а
ия ые".
)
В
. Visual Basic
к . .
Click
4. В
Tools References Microsoft ActiveX Data Objects 2.1 Library.
5. К
П
Click
,
чи ь а
ы
-
.
Private Sub CommandButton1_Click() 'В а а е — и ти в и от Cells.Select Selection.Clear
тары
а
ы
'Со ае и а траивае о е т Connection Dim cn As New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\ оре .mdb" cn.Open 'Со ае и а траивае о е т Recordset Dim rs As New ADODB.Recordset rs.Open "SELECT [Ко овара], [Мар а], [Це а], [НаС а е]," _ & "[Ми и а ь ы За а ], [По тав иПре раще ы] FROM овары", cn 'На о ове Recordset о ае о е т QueryTable и 'в тав яе е о, а и ая 4тро и Dim QT1 As QueryTable Set QT1 = QueryTables.Add(rs, Range("A4")) QT1.Refresh ' ре е яе о и е тво а и е Dim nRowCount As Integer Dim oRange As Range
в QueryTable
л в 11
282 Set oRange = QT1.ResultRange nRowCount = oRange.Rows.Count 'Фор ир е то ец "За а ать товара, т " Range("G4").Value = "За а ать товара, т " Range("G4").Font.Bold = True Range("G4").Columns.AutoFit 'Фор ир е то ец "Стои о ть а а а" Range("H4").Value = "Стои о ть а а а" Range("H4").Font.Bold = True Range("H4").Columns.AutoFit 'Со ае иа а о , оторы в ит в е я то ' "в о ь" QueryTable Set oRange = Range("G5", "G" & nRowCount + 3) ' отови ере е ые, оторые Dim oCell As Range Dim sRowNumber As String Dim cMoney As Currency Dim cItogMoney As Currency Dim cItogSklad As Currency
а
отре
ец G
т я в ци
е
'Про о и ци о о в е я е а о а о о иа а о а For Each oCell In oRange.Cells 'По ае а о т ы о ер тро и в ви е тро ово ере е о sRowNumber = Replace(oCell.Address(True), "$G$", "") 'Проверяе о ре е е ые а и овия If Range("E" & sRowNumber).Value > Range("D" & sRowNumber) And _ Range("F" & sRowNumber).Value = False Then 'По ае а е ие я то ца G ( а а в т а ) oCell.Value = (CInt(Range("E" & sRowNumber).Value) — _ CInt(Range("D" & sRowNumber).Value)) 'По ае а е ие я то ца H ( тои о ть а а а) cMoney = (CInt(Range("E" & sRowNumber).Value) — _ CInt(Range("D" & sRowNumber).Value)) * _ CCur(Range("C" & sRowNumber).Value) 'За и ывае е о в то ец H Range("H" & sRowNumber).Value = cMoney 'Сра е ито в р я cItogMoney = cItogMoney + cMoney End If
П о
и ов
и в Eфcби
283
'И в то е ци е ра ир е тои о ть товаров а а е cItogSklad = cItogSklad + (Range("C" & sRowNumber).Value * _ Range("D" & sRowNumber).Value) Next 'Фор ир е ве тро и ито а и Range("B" & nRowCount + 6).Value = " щая тои о ть товаров Range("B" & nRowCount + 6).Font.Bold = True Range("B" & nRowCount + 7).Value = " щая тои о ть товаров Range("B" & nRowCount + 7).Font.Bold = True Range("D" & nRowCount + 6).Value = cItogSklad Range("D" & nRowCount + 6).Font.Bold = True Range("D" & nRowCount + 7).Value = cItogMoney Range("D" & nRowCount + 7).Font.Bold = True 'Д я ра оты вы е яе ито овое а е ие ... Range("D" & nRowCount + 7).Select '... и рои во и ро ирова ие Range("D" & nRowCount + 7).Show End Sub
а
а е:" а а
:"
ЛА А
12
П о
и ов
и в Accбпп
12.1. О личи л о о ило и в Accбпп
о
и о
и
Access Excel
Word, , -
Office. Word, Excel, PowerPoint, Project
,
. . , . Access
, ,
.
В
.Ф
,
Access Access —
,
: (
, К
,
.И , ,
Access,
,
Access ( ,
Visual Basic, Delphi
-
Access MDB) . C++. В
-
, -
, ,
В Access
), . . .
,
, , SQL Server, Oracle, IBM D2 JET SQL, Access.
. .
П о
и ов
и в Accбпп
285
,
,
VBA
Access,
,— .
Access (
,
.
) -
.Д
,
Access Access,
VBA
-
. К
Access? ,
Access —
,
. ,
, ,
,
Word Excel, . В Access " MDB-
"
-
, .
Access — , SQL Server, Oracle, IBM DB2. (
,
Microsoft, Access, FoxPro, Paradox 10 ( ,
. .), . ),
. А
(
-
Access)
:
оз а
о ы ых ,
о
, . . Web-
(
); оз а
о
оз а (
о о а
аза о
а ых,
о
; о
я
)
— (
VBA
,
); о оа
ь ы
я—
,
(
DTS),
,
. .
л в 12
286
12.2. О ов в Accбпп
о
и
ило
и -
,
(
Access
-
),
.Э
,
,
,
-
. — о о ьзо а
аз
о
а
о о
о
ях
я
я,
о о -
:
,
,
. .Ч
, , soft Visio ERWin. В — ы о а х ы о ы а я аза а ых о , Access, -
Micro-
я, ы о о хо я о а СУ Д.
Jet, , , , -
, .К
— Web—
. . а за я СУ Д , ,
з
- о
,
, Access ó
о
я. -
: ,
,
,
,
,
. . .К ,
VBA
,
,
,
, . .
ERWin. Ч
— о
за
я
о з о
Visio ь о
азы а ых, ,
. — — аз
о а ы а
о
VBA. а а о о я.
я(
.
. 6).
-
П о
и ов
К
и в Accбпп
287
,
, .
-
,
12.3. О о во "
VBA.
Application, в и о Access Word Excel. В Microsoft, Word
"
, Excel,
,
Access —
. , Word
Access Excel —
Application,
-
Access. Access ,
.
Access
:
Dim appAccess As Object Set appAccess = CreateObject("Access.Application") appAccess.Visible = True MsgBox appAccess.Name
Word
Excel,
(
-
, ). Access Windows Explorer, ,
, Word, Excel Access
— mad, Access
API
. .
, . .,
Access. MDBADO,
, -
. Application.
,
Access
К Word
Excel. AutomationSecurity —
.
-
л в 12
288 msoAutomationSecurityByUI —
ак
,
а
|
-
ь.
(msoAutomationSecuritymsoAutomationSecurityLow, .
ForceDisable), BrokenReference —
,
( ).
dll Reference. CodeContextObject —
,
, (
.Э
-
,
. .)
,
,
-
. CodeData —
.
AllDatabaseDiagrams, AllStoredProcedures, AllTables AllViews. AccessObject.
AllQueries, -
AllFunctions,
,
, ,
,
-
Excel.
CodeData
: For Each oTable In CodeData.AllTables Debug.Print oTable.Name Next CodeProject —
,
AllMacros, AllModules CommandBars —
CodeData, AllForms, AllReports,
AllDataAccessPages. CommandBar,
Access. Э
. .
, Access. CurrentData —
CodeData
(SQL Server). А
CodeProject.
Э
, -
CurrentProject. CurrentObjectName
CurrentObjectType —
, (
-
П о
и ов
и в Accбпп
289
). Э
,
,
, .
,
CurrentObjectType
. В
( Nothing)
,
-
-
True.
DataAccessPages —
,
Web)—
(
-
DataAccessPage.
DBEngine —
DBEngine,
Jet, Access.
,
,
,
. . DoCmd — — DoCmd,
-
.Ф
—
" аз . 12.4.
VBA.
" Access DoCmd
— Application,
-
:
Application.DoCmd.RunSQL "Delete from table1" Forms —
Form.
-
AllForms
•
: ;
•
AccessObject,
AllForms,
Form
.
MenuBar —
(
),
-
.Д
ShortcutMenuBar. Modules —
, Printers
Forms. Module, . Module AccessObject.
Printer —
.
л в 12
290
,
Printer
. References —
Reference
(
).
.
Reports —
Modules,
Forms
-
Report. Screen —
Screen,
Access:
,
,
Excel
-
. . ( Word
Active...
Application).
.
UserControl —
,
(
,
,
Access: Access
, ).
Version —
Access (
). Д
, Access 2003
-
— 11.0. Visible —
,
Access Accesss, ,
.
, True. Application
DoCmd).
Д
,
(
,
Access
. DAO,
-
. AccessError() — Err.Description object-defined error".
-
"Application-defined or
BuildCriteria() —
, ,
. .В
. CloseCurrentDatabase() —
Access.
, Access.
SQL-
, -
П о
и ов
и в Accбпп
291
CodeDb() —
DAO.Database,
,
,
( ,
-
). CurrentDb(). CompactRepair() —
Access (
). .
ConvertAccessProject() —
Access. В acFileFormatAccess2002.
, acFileFormatAccess2 CreateAccessProject() —
Access ( Server). Д
SQL ,
NewAccessProject(), OpenAccessProject().
—
CreateAdditionalData() —
XML.
AdditionalData, ExportXML()
-
,
-
.
CreateControl() —
.
. Д CreateReportControl().
DeleteControl() DeleteReportControl(). CreateForm() —
Access
.
-
, . . CreateReport(). CreateGroupLevel() —
.
,
, . CreateNewWorkgroupFile() —
.
,
л в 12
292
ви | ащи а | А
и и
а
С
а чих
-
.
CurrentUser() —
-
. Admin. D... —
,
SQL,
• DAvg(), DSum(), DCount(), DMax(), DMin() ( ;
Access: . .— )
• DLookup() —
, ( ,
,
. -
,
, ,
Word). ,
;
• DFirst()
DLast() —
,
, . Echo() —
Access, .
Eval() —
. ,
VBA. Э
Variant,
.
:
Eval("1 + 1")
2,
:
Eval("Моя_Фу кция()")
,
. Eval() ,
ExportXML()
ImportXML() —
( . .) XMLAccess Access, 6.5.
. ,
,
-
. SQL Server,
-
П о
и ов
и в Accбпп
293
SetOptions() —
GetOptions()
С
, , (
,
),
ы.
ви | Па а :
Application.SetOption "Move After Enter", 2 hWndAccessApp() —
, Access.
API.
Windows
NewCurrentDatabase() —
Access. Д
-
OpenCurrentDatabase(). Nz() —
.
-
, (Null). , (
,
Memo),
,
-
. Quit() —
Access. .
,
RefreshDatabaseWindow() —
. . .
, Run() —
-
VBA 30
-
. , , Access EXE.
, DLL
,
-
RunCommand() —
Access ( ).
, ,
Access,
-
: RunCommand acCmdAppMaximize SysCmd() —
: , , . .
Access,
-
л в 12
294
12.4.
о о DoCmd —
ио
"
DoCmd Access. Э Access — ) -
"
(actions),
(
.Д
—
,
Access . . Д
,
DoCmd
Access
DoCmd
-
"
"
Application, DoCmd.
Microsoft
Application.
—
DoCmd
(
—
, ,
, VBA).
. .—
:
-
. (
ы
С
ак-
а ь.
—
.Д (
DoCmd).
OutputTo() ( Выве тиВФор ате), TransferText() (Прео ра овать е т), TransferDatabase() (Прео ра овать а Да ы ), TransferSpreadsheet() (Прео ра оватьЭ е тро а иц ) — , -
TXT, DBF, Word RunSQL() (За
а
иц
. .)
ODBC . Excel.
( . .).
За ро аSQL), RunMacro() (За
, За ро , Пре .
SQL
Open...() ( тав е ие, Фор
Excel, RTF, SNP, -
Ма ро а)
— .
т рыть... —
. .) — (
,
.
.
П о
и ов
и в Accбпп
295
, , .
12.5. Р о (о Form)
о
и Accбпп и ТBA Access, Access
.Ф VBA — .
,—
, Access,
,
,
-
, VBA,
Word
Ф
Access
1. Д я
а
о
: о а я за а ых. Д
о
Excel.
а
ах азы а ых Access ,
ш
х -
— . ( Oracle) ы | Свя ь
а 2. Ка
а
, а
а
, Access
ица и. я аш о
о
Access
Фа
SQL Server | В и
я. ,
-
. ,
,
,
. . 3. П о о ю ых (
я
о .
, Excel)
К
а
я о ьзо а , ,
ю оз о
о
я ы о
я -
. . Access
,
VBA? —
-
AccessObject,
Access
,
,
,
. ,
, ,
VBA AllForms,
, .
-
л в 12
296 CurrentProject.
CodeProject
,
Access
-
:
Dim oA As AccessObject For Each oA In CurrentProject.AllForms Debug.Print oA.Name Next
, 0.
-
( . .
-
AllForms
, : Debug.Print CurrentProject.AllForms("Фор а1").IsLoaded
,
IsLoaded
). .В Access Form.
-
Application.Forms
Э
, ,
.
Фор а1
, :
,
Debug.Print Application.Forms("Фор а1").Width
Э
, DoCmd.MoveSize(),
(
,
-
,
): DoCmd.MoveSize Width:=10000
: (
,
,
,
Click
), Form.
К Word ,
? Excel Access
. 12.1). И
(
. .
Па а ы а ы/ а ицы.
Access. Д ка
—
С ,
ви
Выв , . 12.2.
-
П о
и ов
и в Accбпп
297
Рис. 12.1.
Рис. 12.2. П
Access
л в 12
298
,
,
,
,
— , Access
.В
, -
, .
-
(
),
,
DoCmd.OpenForm().
-
В :
DoCmd.OpenForm "Фор а1"
, .
,
-
DoCmd.OpenForm()
, , )
(
,
-
. .
DoCmd.Close().
,
,
, False.
Visible
Ф
-
. .В
, ( (
), ,
Па
,
ии
а
в
,
,
,
. .). В Microsoft Access
/ а.
, (
,
)
-
, VBA
(
. 12.3). -
(
Access
),
,
. В Access
(
VBA)
. Св
ая а ка OLE( PowerPoint, ,
к а— ,
Word,
Excel, ),
П о
и ов
и в Accбпп
299
Access (
) Access
Рис. 12.3.
П и
и
ая а ка
.
я
к а—
,
, -
OLE, Access
.Э
Word. ,
Access
, В и
. 12.4. Word,
File ая
а ка
.
к а
WordTemplate.
Word .
П и , ,
-
л в 12
300
Рис. 12.4. Т
Д
я
я
Word
,
, :
'По ае ы oFrame а о е т ри ое и е Dim oFrame As BoundObjectFrame Set oFrame = oForm.Controls("WordTemplate")
о
ра
и
а фор е
'При о ощи ето а DLookup() а ивае в е о а е ие то ца File 'и та ицы Templates, е о ер тро и ( а е ие то ца Num) = 1 oFrame = Application.DLookup("[File]", "Templates", "[Num] = 1") ' т рывае о е т в от е ь о о е ри о е ия, т. е. ' о е т Word а о ове а о а, а р е о о в ра oFrame.Verb = acOLEVerbOpen
о ае о е та
а фор е
'А тиви ир е о е т ри о е ия oFrame.Action = acOLEActivate 'По ае ы а Word в ере е oWord Dim oWord As Word.Application Set oWord = GetObject(, "Word.Application") 'По ае ы а о а ы а и Dim oDoc As Word.Document Set oDoc = oWord.ActiveDocument 'Да ь е ра отае 'в е та, от е е
К
ре ые
тва и Word, а а а и
о
е т
а ри ер, в тав яе
ы
, .
П
чи
а ицы — . ая а/ ч ,
т
,
а ыв
те
— .
П о
и ов
и в Accбпп
К Access
301
, . , ,
.
.Э
Application.CreateControl(),
:
,
,
,
-
. .
Controls,
-
: cSumInNumber = oForm.Controls("SumNumber").Value
12.6. во
в ,
о
и о
и
о
Д
, ,
-
Form
Access. Э
. ActiveControl —
, .
.Э
,
-
,
Screen.
-
Screen.ActiveControl
,
,
:
MsgBox Screen.ActiveControl.Parent.Name After... —
-
,
-
(AfterInstall —
, AfterUpdate —
-
. .). AllowAdditions —
, ,
-
. Д AllowDeletions,
— AllowEdits.
-
Allow...
.
л в 12
302 AutoCenter —
, .
AutoResize —
,
.Э
, ,
,
. Before... —
,
After...,
.
Bookmark —
. Recordset
, ADO ( (
.
-
. 9). )
.
, ,
,
. BorderStyle —
(
,
-
). Caption —
.
ChartSpace —
,
.И
64
. CloseButton —
Close, ,
.И
, -
-
, (
,
)
ControlBox —
в
ь
Control ( и ь, Св
П
. .).
, — Св
ь,
а в
, . ь(
Controls —
ь,
а -
ак ы ь. , . К , MinMaxButtons, Св ь
,
а в
.
,
ь
). .В
Controls
.
П о
и ов
и в Accбпп
303
Count —
.
,
Controls,
CurrentRecord —
. ,
.Э
.
CurrentView —
.
, sign View), (Datasheet View).
(De-
: (Form View)
.Д
-
DoCmd.Close()
.
DoCmd.OpenForm() Cycle —
,
,
,
-
: ( (
),
)
.
DataEntry —
,
—
. . DataSheet... —
,
Datasheet View, . .
.
DefaultControl —
, , . DefaultControl
,
.
,
, DefaultControl.
,
, ,
. .
: 'Со ае те товое о е о о а и Set oDefaultTextBox = oForm.DefaultControl(acTextBox) oDefaultTextBox.FontSize = 12 'Со ае овое те товое о е а фор е — е ра еро рифта 12 Set oTextBox1 = CreateControl(oForm.Name, acTextBox, , , , 500, 500)
-
л в 12
304 DefaultView —
,
.
, ViewsAllowed.
Dirty —
True,
,
.К
,
-
False.
. DividingLines —
,
, ,
. FetchDefaults —
, .
Filter —
. (
,
,
-
,
, , -
,
. .). В , SQL. В
Where
FilterOn.
,
-
City
, Петер
"Са
р ",
:
oForm.Filter = "City = 'Са oForm.FilterOn = True
т-Петер
т-
р '"
, . SQL Server , (
. а
Oracle, (
). Д
ServerFilter
).
Form —
ая
П
а/ ч .
FrozenColumns —
, . .
.Э ак
и ь
чи
,
-
,
.Д цы
Ф
а .
П о
и ов
и в Accбпп
305
HasModule —
, (
).
.
,
VBA,
-
. HelpContextId —
HelpFile
-
. Hwnd —
Windows
И
.
Windows API.
InputParameters —
(
)
-
, ,
.
KeyPreview —
,
:
( ,
. ,
,
,
) -
:
Private Sub Form_Load() Me.KeyPreview = True End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF5 MsgBox "На ата ави а F5!" Case vbKeyF6 MsgBox "На ата ави а F6!" End Select End Sub MenuBar —
(
.
Modal — True,
, Toolbar).
ShortcutMenuBar
.
.Э
,
,
.Ч ,
Popup
True.
-
л в 12
306 Module —
(
.
HasModule).
:
,
(
-
). Moveable —
, .
:
.
Name —
, .
,
,
-
NavigationButtons —
(
,
,
,
,
-
. .)
. NewRecord — ObjectPalette
,
.Э
.
PaintPalette —
-
Windows. В
Windows, Access
-
. . PaletteSource
. On...
,
(OnClick, OnClose, OnConnect After... Before...,
. .) — -
, Access
VBA.
OnTimer —
,
-
Access ,
TimeInterval.
OpenArgs —
, DoCmd.OpenForm().
OrderBy —
,
.
, ,
oForm.OrderBy = "City DESC" oForm.OrderByOn = True
, ,
:
П о
и ов
и в Accбпп
307
OrderByOn. Page —
. . Д
.
Pages,
.
Painting —
. -
False
. True. Выво НаЭ ра
Access DoCmd).
Echo()
(
Picture... —
-
(
)
.
PivotTable —
PivotTable,
.
PivotTable
ActiveX) PopUp —
-
Access —
Web-
( аз . 11.8.
, ,
True,
,
(popup)
Access. -
Access Modal.
. Printer —
( , Application). ,
)
—
( ,
UseDefaultPrinter.
Properties —
Property,
. : Name ( ,
)
Value
(
).
-
. Prt... —
.
.
, . RecordLocks —
, : 0—
л в 12
308
(
,
),
); 1 — ,
,
, ;2— 4К
( . RecordSelectors —
,
(Form ,
—
View)
. Recordset —
-
Recordset
ADO (
.
. 9)
DAO ( ), .
, .К
-
, Recordset. RecordsetType —
Recordset,
,
-
. RecordSource —
.
,
SQL.
Recordset,
.
RecordSourceQualifier —
, SQL Server. В
Access —
-
,
.
ResyncCommand —
, ,
.Э
,
,
,
-
-
. ScrollBars —
,
.
. Section —
. (
) ,
, ,
:
oForm.Section(acPageHeader).Visible = False
П о
и ов
и в Accбпп
309
ServerFilter —
, (
SQL Server
,
Oracle). ,
.Ч
, Access , True:
ServerFilterByForm т-Петер
oForm.ServerFilter = "City = 'Са oForm.ServerFilterByForm = True
р '"
.
OnOpen
Short utMenu —
False,
,
-
. ShortcutMenuBar —
,
.Э
,
,
.
Tag —
.
. ,
, ( ). 2048
.
TimerInterval —
(
),
(
).
. Ч
Load Timer.
( -
,
-
,
, . .
), Toolbar —
, .К
, .
UniqueTable —
, ,
, ,
. ViewsAllowed —
:
, Form View,
DatasheetView
л в 12
310
( . С ви | ащи а | а
(
). ия).
Visible —
,
,
. WindowHeight, WindowLeft, WindowTop, WindowWidth —
. . Д
Form
. GoTo() —
.
Move() —
.
Recalc() —
.
, .
Refresh() —
, .
( -
,
), Requery().
Repaint() —
.
-
, Painting. SetFocus() —
.
Undo() —
,
(
).
-
, .
Undo()
Д
,
. Э VBA (
, Load), ,
Query —
. . ( After..., On...
Д
. .) Project Explorer ,
, (
. 12.5).
,
,
: Before..., . -
П о
и ов
и в Accбпп
311
Рис. 12.5. С
12.7. Р
о
о ч
и (о
Report.
, Reports, Microsoft Reporting Services VBA/ADO/Word VBA/ADO/Excel). , , ,
Report)
Access — ( , ,
,
Access — ,
, , Crystal
Access Access, SQL Server
,
-
Oracle. ( VBA.
) . Application.CurrentProject.AllReports AccessObject), Reports
— . ,
(
-
— Report.
-
ч ы .
Application.CreateReport(): Dim oReport As Report Set oReport = Application.CreateReport()
В
, .
-
л в 12
312
( т ет2
. .)
т ет1,
Access
,
:
DoCmd.Close , , acSaveYes
,
,
.Д
DoCmd.Close()
— DoCmd.Save(): DoCmd.Save , " т ет_ о_ ро а а " DoCmd.Close
,
CreateReport()
.В
,
.
,
,
,
-
.
Access
, :
х
о о
(Page Header) —
-
. . , а
, ,
,
(
) ых (Details), ,
ь а
. Э
; "
"—
-
, ;
Н И
о о
(Page Footer) — ,
( За о о о о
. .
а в к/ и ча и . 12.6): а (Report Header) — . : ,
, П
а
ч а, , ,
о
-
, . .;
а (Report Footer) — .И
,
,
, ,
-
. , —
.
П о
и ов
и в Accбпп
313
Access — . .
Рис. 12.6. Д
, ,
, Application.CreateReportControl().
-
В
( ,
),
-
, ,
, .
,
л в 12
314
: Set txt1 = CreateReportControl(oReport.Name, acTextBox, acDetail) txt1.Name = "txtCustomerID"
, ,
. Д DoCmd.OpenReport().
-
,
,
: ,
-
:
DoCmd.OpenReport " т ет_ о_ ро а а "
.Ч
,
,
,
-
-
,
:
DoCmd.OpenReport " т ет_ о_ ро а а ", acViewPreview
, —
Controls.
,
: oReport.Controls(" т ет_ о_ ро а а ").Visible = False
,
Report
, аз . 12.5.
Form,
—
Report Circle() (
, ), PSet() -
), Line() ( ) . .,
(
-
. , -
. Image
(
),
.
12.8.
и о
В
Accбпп
Access VBA Application, DoCmd, Form
Report.
Д
,
-
, .Э
-
,
. В Access ,
, ,
П о
и ов
и в Accбпп
С
а
315
ы о
а
а ы
(Data Access Pages).
—
Web(
Access
Microsoft SQL Server). Ф ActiveX,
Web-
, . . ( , VBScript (
. .),
VBA). ,
, ActiveX,
, ADO.Recordset, , -
Windows. Click
Word, Excel . . Access ( ицы), Access ая а ица В
Access
—
Фа ак а
С
ы .
С а. Д —П -
HTMLа ь,
Access DataAccessPage.
Web-
—
, . Web-
WebOptions.
В
,
( ).
,
, ,
-
.Д FormatCondition,
FormatConditions. GroupLevel
. Module
Access — Modules,
.Э Application.
Module
л в 12
316
.Д
,
AddFromFile(), AddFromString(), CreateEventProc()
Д
(
)
-
Access (
Reference
. .
References References
). -
,
.Д
References.AddFromFile().
-
SmartTag
—
, -
, Microsoft.
Office
З
о
и
л
и
-
Microsoft Office. В
ило
о
-
о л о о и ТBA в Accбпп
12:
Си ация: , Word (
. а о
оя
ь ю а о
,
. 10), : ,
, ,
. -
, Access; : (
А АН И
VBA), DogovorTemplate.dot, C:. .
Normal.dot
: 10
, Word,
, Microsoft Access.
Word, ,
:
Access.
-
П о
и ов
и в Accбпп
Рис. 12.7. Ф
Рис. 12.8.
317
я
я
я
л в 12
318
.Д
, : 1.
Access,
— Word.
2.
, . 12.7, Word. .
3.
: (
О в
и
К
1
1.
. 12.8). В
.
12
(
):
Microsoft Access а и а а
С
Н вая а а а C:
ых.
и к . 12.9).
к
С
а. В Ша
а и
а
ицы в
а
к
ицы к а.
И яс Н
а Д
. 12.1.
лиц 12.1. Ти Т Т
лиц а
о ово
ы (
-
а ицы а ицы в
ы
, Т
а и
.
Ша
и
а ь. В
ы
Рис. 12.9. С
3. В С
|С
Dogovors.mdb.
2. В (
Фа
Ра )
е 10 30
П о
и ов
и в Accбпп
319
Т И яс
а
Ти
Д
а
Д я
лиц 12.1 (о о ч
ы
Ра
я
/
и )
е 50
Т
50
П
Т
50
Д
Т
50
Ю
Т
100
в
ы
. а
4.
ицы
. В " В авка
Ша
ы,
и а и Ша
",
к .В С а ь и а а, C:\DogovorTemplate.dot, OK,
10.
-
. 5. Щ
,
Н
Ша
.
а
-
1, К
, ,
. 2
(
Access
-
): 1. В
2.
С
ица:
в
3. 4. 5.
Ф
а
а
ы,
а
Ф
ы ы
щью
ицы и а ы Вы а ы
я
а
а. а -
. -
а
.
а
.
я а
а и .
-
ия
в
в,
-
л в 12
320
и ь
ак
ы .
в .Ф
6. . Па П и
7. Д
Выв
. Д
ии и
OLEObject1,
Нет.
а
:
С
и
ва ь
в
.Э -
cmdCancel,
— cmdDog. В 9.
к а. ,
я
а к а —
8. Д
в ая а ка
а.
, (Н
в
а,
, а а ,
. 12.10.
Рис. 12.10. Ф
,
. .). В ,
-
П о
и ов
и в Accбпп
10.
321
Tools | References Microsoft Word 11.0 Object Library.
11. Щ П Click
а
а
ы :
ка
а
ы и . В OK. В
П
и
ва ь
в
ь -
Private Sub cmdCancel_Click() Form.Undo End Sub
12.
Click
С
и
: Private Sub cmdDog_Click() Dim dDate As Date Dim Но ерДо овора, оро , р ова ие As String
р а и ация, Пре
тавите ь, До
о ть, _
'При ваивае а е ия ере е ы ри о ощи э е е тов рав е ия If Form.Controls("Дата").Value "" Then _ dDate = Form.Controls("Дата").Value If Form.Controls("Но ерДо овора").Value "" Then _ Но ерДо овора = Form.Controls("Но ерДо овора").Value If Form.Controls(" оро ").Value "" Then _ оро = Form.Controls(" оро ").Value If Form.Controls(" р а и ация").Value "" Then _ р а и ация = Form.Controls(" р а и ация").Value If Form.Controls("Пре тавите ь").Value "" Then _ Пре тавите ь = Form.Controls("Пре тавите ь").Value If Form.Controls("До о ть").Value "" Then _ До о ть = Form.Controls("До о ть").Value If Form.Controls(" р ова ие").Value "" Then _ р ова ие = Form.Controls(" р ова ие").Value 'По ае а о — те ерь и а ы а ы Dim oBOF As BoundObjectFrame Set oBOF = Form.Controls("OLEObject1") oBOF = DLookup("[Ша о ]", "Ша о ы", "[Но ерШа oBOF.Verb = acOLEVerbOpen
о а] = 1")
oBOF.Action = acOLEActivate 'По ае ы и а а ще ы Dim oWord As Word.Application
а и Word и от рыты
в
е
о
е т
л в 12
322 Set oWord = GetObject(, "Word.Application") Dim oDoc As Word.Document Set oDoc = oWord.ActiveDocument oWord.Visible = True oWord.ActiveWindow.WindowState = wdWindowStateMaximize oDoc.Activate 'В тав яе а ые в а а и oDoc.Bookmarks("bNumber").Range.Text = Но ерДо овора oDoc.Bookmarks("bCity").Range.Text = оро oDoc.Bookmarks("bDate").Range.Text = dDate oDoc.Bookmarks("bOrg").Range.Text = р а и ация oDoc.Bookmarks("bTitle").Range.Text = До о ть oDoc.Bookmarks("bPerson").Range.Text = Пре тавите ь oDoc.Bookmarks("bLaw").Range.Text = р ова ие End Sub
13.
.
К
3
(
-
): 1. В
ка.
2. В Выв ы/ ( . 12.11).
Рис. 12.11. Н
С ви
Access Па а а ицы
ы а
ка Ф а
я
Па а я а
а а е
ия
ы а
,
ска
ы ав
в
П о
и ов
и в Accбпп
3.
323
OK. .
,
,
,
Б
я .
.
,
ЛА А
13
П о
и ов
13.1. З ч
о
и в Лсриллз и ов
Outlook ( Express) — .
в Лсриллз ,
Outlook -
.
,
,
Microsoft (Personal Information Manager, PIM).
— а о а . Ка а ь ( К ак а ача), , Microsoft Project). , Ка а я. Outlook, ( Exchange Server) . , , Ка а я Outlook
а
а
, . . Outlook ( -
,
-
, . :
Exchange (
,
. .).
,
Ка
а ь, -
,
,
: ,
.
П о
В
и ов
и в Лсриллз
325
,
.Ч
Ка Outlook
.
В
, ,
а ь. В
, ,
ча,
,
. К
,
-
, . В
а о а
—
о
а
а
.К
Outlook — . В
-
, . ,
К
, ак ,
Outlook , -
Exchange Server ( Exchange Server Outlook). ( , -
,
-
,
), ,
. а о а
— ,
за а а
о
я
.Д
-
, (
, Microsoft Project
, . (
Project Server), , Outlook ,
)
,
-
. . Ч
а о а
— . .Д
Outlook
о . Office, -
, ,
. а о а
за
а
—
,
-
. К
, .
Outlook—Exchange Server
Outlook -
л в 13
326
аз а о
а
,
о
о
collaboration development — о ьзо а я. , -
оо
,— . ,
: .Ч ,
,
: ,
-
. ,
, . .
1. В Вх
Outlook
: -
ящи
Outlook . ави ь в
2.
х а
ию
,
-
( аци
ы
ь,
).
3.
,
а ь-
, .
4.
( ,
а ь
)
.
5. Ф
С
,
ч ,
,
и
ва ь
,
-
. .
, ,
),
,
-
—
. И, Outlook
, : Outlook —
( , Exchange Server. .Ч
—
-
П о
и ов
и в Лсриллз
327
Outlook — ,
,
-
( VBA
Access). С
к а а (
, ых . 13.1),
ви | Ф
ы (
)
,
,С к ы ь.
:
Ф
(
щ
а|П
и
Outlook: К и и к ,
ьк
)
. .
Рис. 13.1.
Outlook
,
CommandButton1,
, 1. В
Ф );
а
-
: П
П
ь к
ьк
(
К
к-
л в 13
328
2. В
:
Function CommandButton1_Click() MsgBox "Привет и фор ы Outlook" End Function
К
, .
-
, 3. Ч К
,
и ь
Ф
, — Outlook
Вы.
, .К
VBA ( VBScript). Д , Outlook Exchange Server: ,
,
,
. .В
.
,
а,
,
,
, , .
Outlook .
,
Microsoft, Files\Microsoft Office\OFFICE11\1049\OLFM10.CHM, В Outlook VBA, .
C:\Program www.slipstick.com. VBA
,
VBA,
: ; ( ,
, ),
,
-
; , Excel
, Exchange; ;
-
. Outlook
.
П о
и ов
13.2. о
и в Лсриллз
329
о о о о о и и ов и в Лсриллз Outlook .
, ,
Outlook,
.К
,
( Excel — В Outlook PST, В
, ,
,
Access —
,
Word , Normal.dot), MDB.
VBA
. Outlook
: Outlook
.
,
-
.В
: — о о ьзо а ь я а ых о , Project Explorer ( . 13.2);
Рис. 13.2. С
а
о
а
о
а
о-
л в 13
330
— Word Outlook
оз а ь Outlook,
о
о
о
,
,
.
В
VBA Outlook
,
Outlook Outlook PSTOutlook . —
. (
,
Exchange
). , В Outlook MAPI (Messaging Application Programming Interface, ), , . Namespace, , аз . 13.4. Outlook Inbox (В ) ( Microsoft Outlook 11.0 Object Library):
Outlook
,
Dim oOutlook As New Outlook.Application Set oNameSpace = oOutlook.GetNamespace("MAPI") Set oInbox = oNameSpace.GetDefaultFolder(olFolderInbox) oInbox.Display
.К Office В Outlook Outlook: ContactItem), (
Outlook , Item ( )
Outlook
.
: Item — , ( MailItem), Appointment) . . !
(
.
Outlook
,
, , ,
.И
Outlook -
VBA). Ч
( ,
.И — Outlook Object Model Guard) VBA.
Outlook , ( .И
-
П о
и ов
и в Лсриллз
Outlook Windows 2000, XP И Office New Application.
Д
331
CDO, 2003. Outlook
, (
CreateObject())
Outlook, .
Access,
,
.В
,
Outlook, .
13.3. О о во
Application, в и о
К
Office,
Outlook Outlook
Application.
(
.
-
). Outlook
Application
( Namespace). Application
,
.
Explorers — Explorer,
Explorers
Outlook, .
Explorer —
-
,
Outlook
, , (Explorer.Activate())
, (Explorer.Close()).
ActiveExplorer()
,
Application , GetExplorer() —
Outlook (
Explorer
-
). Inspectors —
,
Explorers. Inspector.
Inspectors Inspector
Outlook, (
Explorer,
). ,
Application.
,
Inspector
Explorer,
Explorer. Д ActiveInspector() GetInspector()
, -
л в 13
332 Reminders — Reminder,
Reminders
. ,
-
: Dim oOutlook As New Outlook.Application Dim oReminder As Outlook.Reminder For Each oReminder In oOutlook.Reminders oReminder.Dismiss Next Session —
Namespace,
-
( . .
MAPI). Э
GetNamespace().
аз . 13.4.
Namespace
А
Session
Outlook.
Namespace
Outlook.Application. Active... — Explorer AdvancedSearch() —
Inspector.
.
Outlook (
). Search
аз . 13.7. CopyFile() —
-
Results
Outlook.
,
,
-
Exchange Server SharePoint Portal Server. CreateItem() —
,
. Outlook. ,
,
, ,
: Dim oOutlook As New Outlook.Application Dim oContact As Outlook.ContactItem Set oContact = oOutlook.CreateItem(olContactItem) oContact.FirstName = "А а е ия ециа ь ы р ов" oContact.Email1Address = "[email protected]" oContact.Save oContact.Display
-
П о
и ов
и в Лсриллз
А
333
,
-
Excel. Outlook .В
.
— :
Set oContact = Nothing CreateItemFromTemplate() —
Outlook GetNameSpace() —
VBA
Outlook, oft.
—
, Outlook.
,
,
MAPI.
.
IsSearchSynchronous() —
(
. аз . 13.7).
Quit() —
13.4. О
Outlook.
Namespace
К
, —
Outlook ,
,
Outlook,
.
. Outlook — MAPI, .Д
, Outlook ,
"
"
Application. Namespace,
-
: 1. В
GetNameSpace()
Application:
Set oNameSpace = Application.GetNamespace("MAPI")
2. В
Session
Application:
Set oNameSpace = Application.Session
Э
, .
-
л в 13
334 Namespace
: ,
.К , Exchange, Exchange. В
, -
, Namespace
.
Namespace
,
-
Outlook -
.В
-
.
"
" .
,
, Web-
,
,
,
,
К
. .
? ,
. Word
Excel, ,
.
,— Microsoft Outlook 11.0
Object Library. — VBA
CommandButton1.
: .Э
Declarations
General— :
Outlook.Items
Public WithEvents oItems As Outlook.Items
.
oItems Click()
,
,
.
:
Private Sub CommandButton1_Click() 'За ае Outlook Dim oOutlook As New Outlook.Application ' е ь ва о: а ывае , то о ытия oItems — это о ытия ' а и Inbox в Outlook Set oItems = _ oOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
П о
и ов
и в Лсриллз
335
'Да ь е ро то а ае рие о ты о в е ет ы Dim oNamespace As Outlook.NameSpace Set oNamespace = oOutlook.GetNamespace("MAPI") oNamespace.SyncObjects("В е ет ые а и и").Start
а и е
End Sub ' ови о ытия ояв е ия ово о оо ще ия Private Sub oItems_ItemAdd(ByVal Item As Object) MsgBox Item.Subject End Sub
В
Microsoft
,
ItemAdd
, , К
. Exchange Server,
, Exchange .
. Exchange Server
,
.Д Exchange, , PostFix, CommunigatePro
,
— , . . Ч , Outlook
А
,
, ,
UNIX — SendMail, , .
, Namespace.
AddressLists —
AddressLists, AddressList,
.
, (
,
Outlook
):
Dim Dim Dim Set For
oOutlook As New Outlook.Application oNameSpace As Outlook.NameSpace oAddress As Outlook.AddressList oNameSpace = oOutlook.GetNamespace("MAPI") Each oAddress In oNameSpace.AddressLists Debug.Print oAddress.Name Next
В
AddressList AddressEntry,
"
AddressEntries
. " ,
,
. .
, -
л в 13
336
Outlook
, —
AddressLists
К
( Exchange Server,
Outlook
-
ак ы, ContactItem).
. .В
CurrentUser —
-
(
Outlook) ,
Recipient,
,
, ( ).
, -
, :
Set oNameSpace = Application.GetNamespace("MAPI") Set oRecipient = oNameSpace.CurrentUser Debug.Print oRecipient.Address
К
,
-
: Outlook? ,
,
-
. В
: +
(
-
а)
. Д
Outlook,
-
WshShell
Windows Script Host, , "
VBA
" .И
Debug.Print,
Windows API. ExchangeConnectionMode —
. Server Folders —
Exchange
, Outlook Exchange Server ,
.
,
Namespace.
Folders
Outlook ( Folders,
Outlook). К
В -
MAPIFolder,
,
,
,
Outlook ,
Items
(
-
П о
и ов
и в Лсриллз
,
337
,
. .).
Folders
.
MAPIFolder
Offline —
,
Outlook .
SyncObjects — SyncObject (
). ( ,
С
Outlook ,
-
ви |
ави ь/П
чи ь). —
SyncObject,
-
. ,
Outlook,
AddStore()
-
.
Namespace AddStoreEx() —
Outlook , . AddStoreEx() . RemoveStore().
.
PST -
, Outlook
, PST-
CreateRecipient() — Recipient. GetSharedDefaultFolder().
Э .
Н вы
Dial() —
в .В
к,
-
, . GetDefaultFolder() — MAPIFolder
ы
) . .
Outlook: Вх , ) :
, ящи , К
( ак ы, Ка а ь, К ак ы (
ав
-
Dim oOutlook As New Outlook.Application Set oNameSpace = oOutlook.GetNamespace("MAPI") Set oInbox = oNameSpace.GetDefaultFolder(olFolderContacts) oInbox.Display Get...FromID() —
,
, -
л в 13
338
CDO ( Outlook.
аз . 13.8),
—
GetSharedDefaultFolder() — GetDefaultFolder(),
, ,
.
,
Outlook Inbox -
,
. Logon() —
MAPI ( . .
Exchange Server). В ,
,
,
-
. . Logoff().
Вы OK,
PickFolder() —
13.5. олл
ци Folders и о
MAPIFolder
, . . В
Outlook, ,
—
,
).
Outlook Folders.
MAPIFolder,
В Outlook . ., ич ы
. ящи , К
а ки,
-
.
MAPIFolder
(
а ки.
щи
( Вх ак ы, Ч , , а ки, Mailbox — Administrator). Д
Folders, Folders
Namespace (
. аз . 13.4):
, Outlook вики , , -
Dim Dim Dim Set For
oOutlook As New Outlook.Application oNameSpace As Outlook.NameSpace oFolder As Outlook.MAPIFolder oNameSpace = oOutlook.GetNamespace("MAPI") Each oFolder In oNameSpace.Folders Debug.Print oFolder.Name Next
, GetDefaultFolder()
Inbox, Namespace:
-
П о
и ов
и в Лсриллз
339
Dim oOutlook As New Outlook.Application Dim oNameSpace As Outlook.NameSpace Dim oFolder As Outlook.MAPIFolder Set oNameSpace = oOutlook.GetNamespace("MAPI") Set oFolder = oNameSpace.GetDefaultFolder(olFolderInbox) Debug.Print oFolder.Name
Outlook (
), (
,
)
-
,
,
. В
, Outlook ,
,
-
,
,
.В
, : Public Sub StartProc1() Dim oOutlook As New Outlook.Application Dim oNamespace As Outlook.NameSpace Dim oChildFolder As Outlook.MAPIFolder Set oNamespace = oOutlook.GetNamespace("MAPI") 'Пере ирае а а вер е о ров я и 'вы ывае я ее роце р DoFolder() For Each oChildFolder In oNamespace.Folders DoFolder oChildFolder Next End Sub 'Эта роце ра выво ит и я в е о е ы а о и ' я а о и и о ять вы ывает а е я Public Sub DoFolder(ByVal oFolder As MAPIFolder) Dim oChildFolder As Outlook.MAPIFolder For Each oChildFolder In oFolder.Folders Debug.Print oChildFolder.Name 'Д я а о в о е о а и о ять вы ывае DoFolder oChildFolder Next
роце
р
DoFolder()
End Sub
Д
Folders MAPIFolder.
-
л в 13
340
,
Folders
(Count, Item(), Add(), Remove() .
. .).
MAPIFolder
.
MAPIFolder AddressBookName —
-
.Д
(
).
CurrentView —
View,
,
.Д
-
MAPIFolder
. DefaultItemType —
(
)
(
. .). Э
,
-
. -
(
,
,
-
). DefaultMessageClass —
,
DefaultItemType,
.В
,
,
. Description —
.
Outlook
.
EntryID —
, MAPI-
(
Outlook
,
Exchange Server) .
FolderPath — , "\\ и ые
Outlook, а
Folders —
.К
,
-
,
, InAppFolderSyncObject —
С
-
и\В о ящие".
. ,
-
Application Folders. Э ви | ави ь/П чи ь) .
IsSharePointFolder —
(
SyncObject)
( ,
, Windows SharePoint Services
П о
и ов
и в Лсриллз
341
(
).
-
. Items — Items
.
Name —
.
аз . 13.6.
— ,
,
ShowAsOutlookAB —
К
. ,
ак ы
К
.
ак а и ,
True.
-
. ShowItemCount —
,
Outlook
:
, .
StoreID —
MAPI-
(516
,
. В
).
,
,
-
Exchange. UnReadIemCount —
-
.Д
.
Views —
View
(
),
. WebViewOn —
HTML-
( Outlook , яя
). WebViewURL.
а ица
Э
, а -
.
,
CopyTo(), MoveTo(), Delete(), AddToFavorites(), . GetExplorer()
Display(), — Explorer,
Outlook.
13.6. олл ци Items ио л ов Лсриллз ( . .) —
,
, ,
-
л в 13
342
Outlook. И . Д MAPIFolder,
Items.
Items
В
.
.В
16 Outlook.
AppointmentItem —
В
а ь.
, . Э
ч
ContactItem —
Outlook Ка .
.
DistList —
К
,
ак ы.
.
DocumentItem —
,
Outlook Outlook. DocumentItem , , Excel, ZIP, Acrobat Reader PDF, . .— , . Outlook ( PST, Exchange Server), , Outlook. , , ,
Word, EXE.Э Outlook ,
-
. JournalItem —
.
MailItem —
. .
MeetingItem —
). ,
, —
( , Inbox.
-
( а
В
AppointmentItem,
ча
).
NoteItem —
(
а
ки). .
Ка
-
П о
и ов
и в Лсриллз
343
PostItem —
Э
. ,
. ,
MailItem
•
: ;
•
Post().
Send()
RemoteItem —
-
.Э
( , ,
Э
-
,
) 256
. , Outlook Exchange Server ). Exchange Server POP3/IMAP4),
( OST ( . . MAPI . ReportItem —
, : (non-delivery report),
. Э
, , . а ачи.
TaskItem —
TaskRequestAcceptItem, TaskRequestDeclineItem, TaskRequestItem, TaskRequestUpdateItem — , -
. Э
. , MailItem, ContactItem
-
DocumentItem.
. И
.К
,
Outlook .К
, , ,
. . Э ContactItem, MailItem
-
,
TaskItem,
, : AppointmentItem,
. .
Outlook.
, ,
,
.
,
л в 13
344
Outlook : Dim oOutlook As New Outlook.Application Dim oMessage As Outlook.MailItem 'Со ае о е т оо ще ия Set oMessage = oOutlook.CreateItem(olMailItem) 'Ко oMessage.To = "[email protected]" ' е а оо ще ия oMessage.Subject = "Привет и VBA" ' е т оо ще ия. И о ь ова ие во тва Body о а ает, ' то ы о ы ае оо ще ие о ы ы те то . 'Мо о та е о ать оо ще ие в фор ате HTML и и RTF oMessage.Body = " е т оо ще ия" 'До ав яе в о е ие oMessage.Attachments.Add ("C:\installlog.txt") ' т рав яе оо ще ие oMessage.Send
, , ,
. 13.3. а
, -
.
Рис. 13.3. П
щ
Ч
Outlook
?
В
: я В
о
—о а я ь оо VBA а о о Outlook (
з а о а, о о ы .
, ;
ахо Outlook).
П о
и ов
и в Лсриллз
345
о ьзо а ь
—
а ь ы
за
о
о
Outlook, VBA
. — Outlook Redemption.
www.dimastr.com/redemption. Э
, ,
, а
о а о а Microsoft
, ы о о а
—
азо о а ь . В
VBScript Windows API (
,
; а х
http:// -
а ь о а о ы о . VBA ,
,
-
, MAPI).
Delphi),
API. К
-
VBA VBA
(C++ ,
API
-
.Д
Outlook http://www.mapilab.com/ru/support/articles /vb_outlook_security_1.html ( ); ( )— о ьзоа ь я а ы о а о о а о хо я х о ю о CDO, Windows 2000, XP 2003. аз . 13.8. Outlook. ( , ContactItem 100 ), . . , ,— .К , Outlook , , , Locals. . , К а к
ContactItem
и я. ,
,— ,
, ,
"Крат ое и я" (
. 13.4).
л в 13
346
Рис. 13.4. С
,
,— К
ак ы,
, .
, Outlook)
(
:
Dim oNamespace As NameSpace Dim oFolder As MAPIFolder Dim oContactItem As ContactItem Set oNamespace = Application.GetNamespace("MAPI") Set oFolder = oNamespace.GetDefaultFolder(olFolderContacts) Set oContactItem = oFolder.Items("Ко та т1") Stop
К
,
Stop
. , В К
, ,
(
, View) (
Locals. . 13.5). oContactItem "Крат ое и я".
К
П о
и ов
и в Лсриллз
347
,
,
EMail1DisplayName (
. 13.6).
Рис. 13.5.
Locals
Рис. 13.6. С
Locals
Item.
13.7.
и о
Лсриллз Outlook:
Application — Namespace — Folders/MAPIFolder — о ъекты_э еме тов.
, . Outlook. -
Explorer
(
К ,
Dim oNamespace As NameSpace Dim oFolder As MAPIFolder Dim oExplorer As Explorer
ак ы
View).
, :
л в 13
348 Set oNamespace = Application.GetNamespace("MAPI") Set oFolder = oNamespace.GetDefaultFolder(olFolderContacts) Set oExplorer = oFolder.GetExplorer() oExplorer.Display oExplorer.CurrentView = "По ор а и ация "
,
(
View),
-
:
Dim oNamespace As NameSpace Dim oFolder As MAPIFolder Dim oView As View Set oNamespace = Application.GetNamespace("MAPI") Set oFolder = oNamespace.GetDefaultFolder(olFolderContacts) For Each oView In oFolder.Views Debug.Print oView.Name Next Explorer —
.
,
,
,
-
,
:
For Each Item In Application.ActiveExplorer.Selection If TypeName(Item) = "MailItem" Then Debug.Print Item.Subject Next
Outlook,
Explorer —
(
,
Inspector.
. .). Explorer,
,
,
-
, Outlook. Outlook. Outlook
. аз . 13.5,
. Folders
Outlook. Д AdvancedSearch() AdvancedSearchComplete (
MAPIFolder.
-
, ,
-
— — Search Application
Results,
П о
и ов
и в Лсриллз
349
100
). В
,
, .
В
AdvancedSearch().
Э
-
: Scope —
, . .
.
,
NameSpace
MAPIFolder.
, Folders
-
; Filter —
.
,
.
SQL Server ( LIKE), ,
,
.
,
,
,
-
Microsoft
— :
• http://msdn.microsoft.com/library/en-us/cdosys/html /_cdosys_schema_mailheader.asp;
• http://msdn.microsoft.com/library/en-us/cdosys/html /_cdosys_schema_httpmail.asp. ,
( ,
"
"),
: "urn:schemas:mailheader:subject LIKE '% т ет%'"
"
",
:
"urn:schemas:mailheader:subject = ' т ет'" SearchSubFolders —
True,
. .И
Tag —
,
,
. В
AdvancedSearch()
Search:
Dim oSearch As Search Set oSearch = Application.AdvancedSearch("Inbox", _ "urn:schemas:mailheader:subject LIKE '% т ет%'", True, "Search1")
, AdvancedSearch(),
, ,
-
л в 13
350
.А
Д Microsoft Office Outlook Objects, ThisOutlookSession
AdvancedSearchComplete.
Project Explorer
Application AdvancedSearchComplete() (
. 13.7).
Рис. 13.7. И
AdvancedSearchComplete
А
Search
( Outlook (
). Item — MailItem),
Results
.
13.8. Ал оч о — о В -
Outlook — ,
,
ив ,
и о и лио
л CDЛ
. Э
о
, ,
. К аз . 13.6),
о
,
Outlook. ,
(
CDO,
-
Outlook. CDO (Collaboration Data Objects, )— Exchange Server.
-
П о
и ов
и в Лсриллз
351
, CDO, : Microsoft CDO for Exchange 2000 Library, Microsoft Office. , ,— Tools | References VBA. CDO
:
Dim oMyMail As New CDO.Message oMyMail.To = "[email protected]" oMyMail.From = "[email protected]" oMyMail.Subject = "Hello from CDO" oMyMail.TextBody = "Our letter" oMyMail.AddAttachment "C:\1.txt" oMyMail.Send
, Server 2000/2003 Internet Information Server SMTP, C:\Inetpub\mailroot\Pickup ( ), Exchange Server IIS. , SMTP. Д Send() :
Exchange
-
oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 "http://schemas.microsoft.com/cdo/configuration/sendusing" —
,
. 1,
Pickup. :
omyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ "smtp.YourServer.com"
CDO.Configuration: oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
1 0—
,
, (
),
2—
NTLM.
л в 13
352
И
:
oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusername") = _ "[email protected]" oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = _ "Password"
И (
25),
SSL
-
:
oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 2525 oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False oMyMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
,
,
-
: oMyMail.Configuration.Fields.Update Send(): oMyMail.Send
( ,
,
),
: oMyMail.TextBodyPart.Charset = "windows-1251"
К
, Pickup . IMAP4, MAPI,
SMTP POP3, , (
Outlook) CDO — MAPI ( . .
. Microsoft CDO 1.21 Library. Exchange Server), Exchange Server В , CDO 1.21 Library (
-
, ,
Tools | References). Ч
. ,
, :
Microsoft -
П о
и ов
и в Лсриллз
353
Dim oSession As New MAPI.Session Dim oFolder As MAPI.Folder Dim oMessage As MAPI.Message '"Outlook" — и я о тово о рофи я. и этот ара етр е ере ать, 'то во и ет иа о овое о о ре о е ие вы рать ы рофи ь. 'И я о о рофи я о о ать а ра и это о иа о ово о о а oSession.Logon ("Outlook") Set oFolder = oSession.Inbox For Each oMessage In oFolder.Messages If oMessage.Unread = True Then Debug.Print oMessage Next
MSDN.
З Р
о
и
л о
о
о л о и в Лсриллз
о
13:
Си ация: В , .
,
, Outlook. А АН 1.
К
,
: Outlook ImportContacts(),
:
Outlook
К
ак ы к и
в.
ак К ие ты
2.
C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\ Ч
.mdb.
, ,
-
. Н
, Exchange Server
Outlook. К
я VBA
я
,
щ
.В
я
,
.
л в 13
354
О в
и
1.
13
Outlook Visual Basic.
+,
2. В Tools | References Microsoft ActiveX Data Objects 2.1 Library. 3. В
П
Project Explorer к 1
Insert | Module. Module1.
4. В
ImportContacts()
.
:
Public Sub ImportContacts() Dim oFolder As MAPIFolder Dim oNameSpace As NameSpace Dim oContact As ContactItem Set oNameSpace = Application.GetNamespace("MAPI") 'Со ае а и о ае ы а ее о е т Set oFolder = oNameSpace.Folders(" и ые а и").Folders. _ Add("Ко та ты ие тов", olFolderContacts) 'Со ае о е т ое и е ия Dim cn As New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\ оре .mdb" cn.Open 'Со ае о е т Recordset Dim rs As New ADODB.Recordset rs.Open "К ие ты", cn 'Про о и ци о о Recordset Do While rs.EOF = False 'Со ае о е т о та та Set oContact = Application.CreateItem(olContactItem) 'За о яе е о во тва а о ове а ы и Recordset oContact.CompanyName = rs.Fields("На ва ие") oContact.FullName = rs.Fields(" ращать яК") oContact.BusinessTelephoneNumber = rs.Fields(" е ефо ") 'Пере ещае в а а и о ра яе oContact.Move oFolder oContact.Save
-
П о
и ов
и в Лсриллз
' во о ае а ять Set oContact = Nothing 'С ви ае я а о а и ь в Recordset rs.MoveNext Loop End Sub
355
ЛА А
14
П о и ов в PowerPoint
и
PowerPoint —
( . . — VBA
И ,
.Ч
, PowerPoint Word Excel,
).
. . , PowerPoint ,
. —
PowerPoint ,
. И
, (
PowerPoint , , . -
,
-
)
.
Ч
PowerPoint: а
о а о з о
оз а а ь ); ьо
а о
з з
а а
( —
,
,
. . Ч ,
-
. В PowerPoint ,
: — Application Word
Excel;
П о
и ов
и в PлwбоPлекр
357
— ,
Presentation.
Presentations
Excel;
Workbook Presentation
Slide.
Slides Worksheet
Slide
( ,
,
В
,
-
Shape.
Shapes
Shape
,
В
Excel; 22
: . .).
,
— Application, Presentation, Slide PowerPoint.
-
Shape —
В
-
PowerPoint ( ),
PowerPoint . ,
JPG-
, ,
, .
.
DSCN2440.JPG , — , JPG-
), К , PowerPoint, Word Excel.
PowerPoint C:\Slides ( ). И JPGDSCN2480.JPG. Ф
, -
( .
VBA
PowerPoint ,
VBA,
,
, . :
1.
Word
Excel, .
• Microsoft PowerPoint 11.0 Object Library (msppt.olb) — PowerPoint; • Microsoft Scripting Runtime (ScrRun.dll) —
— : -
,
FileSystemObject
.Э Windows 2000, —
, .
Д
.
л в 14
358
2. К
,
, ,
PowerPoint. Д . .:
— Word, Excel, Access
Dim oApp As New PowerPoint.Application oApp.Activate oApp.Visible = msoTrue
3.
—
:
Dim oPresent As PowerPoint.Presentation Set oPresent = oApp.Presentations.Add()
В А
,
Word. ,
PowerPoint.
4.
. ,
К
C:\Slides.
. В
, Scripting Runtime ( )
Office,
:
Dim oFSO As New Scripting.FileSystemObject Dim oFolder As Scripting.Folder Dim oFile As Scripting.File Set oFolder = oFSO.GetFolder("C:\Slides") For Each oFile In oFolder.Files ... Next
,
,
:
MsgBox oFile.Name
, . 5. Д
Slides.
Add()
,
В
.Д
PowerPoint 2003 ( ),
VBA , :
(
1),
ppSlideLayout
), , —
:
(
-
. -
П о
и ов
и в PлwбоPлекр
359
Dim nCounter As Integer nCounter = 1 For Each oFile In oFolder.Files Set oSlide = oApp.ActivePresentation.Slides.Add(nCounter, _ ppLayoutBlank) ... nCounter = nCounter + 1 Next
6. А
—
.Д
AddPicture()
-
:
Shapes
oSlide.Shapes.AddPicture FileName:="C:\Slides\" & oFile.Name, _ LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _ Left:=10, Top:=10, Width:=700, Height:=520
. И
FileName —
.
,
LinkToFile (msoFalse) (msoTrue). К ,
-
, ( ,
SaveWithDocument
( ,
Height
). А
PPT).
-
Left, Top, Width
( ).
5. Ч
, , :
oFile.Delete
И Dim oApp As New PowerPoint.Application oApp.Activate oApp.Visible = msoTrue Dim oPresent As PowerPoint.Presentation Set oPresent = oApp.Presentations.Add() Dim oFSO As New Scripting.FileSystemObject Dim oFolder As Scripting.Folder Dim oFile As Scripting.File
:
-
л в 14
360 Set oFolder = oFSO.GetFolder("C:\Slides") For Each oFile In oFolder.Files Set oSlide = oApp.ActivePresentation.Slides.Add(nCounter, _ ppLayoutBlank) oSlide.Shapes.AddPicture FileName:="C:\Slides\" & oFile.Name, _ LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _ Left:=10, Top:=10, Width:=700, Height:=520 oFile.Delete Next
. , . . ,
,
, " -
. -
.
" .
-
-
.
, :
ActiveWindow.Selection.SlideRange.Shapes.AddPicture ...
,
,
З П о в л А АН
и
. .
л
о
о
о
-
о вл
о л
о 14: ов
: PowerPoint,
, 2005" (
В
л и
"© А
-
. 14.1).
, VBA, я я
, , я
Word .Н PowerPoint.
Excel,
я
-
П о
и ов
и в PлwбоPлекр
361
Рис. 14.1. Ч
О в К
и
14 ,
,
:
Public Sub InsertCopyRight() Dim oSlide As Slide Dim oShape As Shape 'Про о и ци о о в е а а в ре е тации For Each oSlide In Application.ActivePresentation.Slides 'Д я а о о а а о ае а и ь (в ви е о е та Shape) 'Н ые а е ия я и овы ара етров Left, Top, Width и 'Height а о и о оро и и ере а роре ор ер Set oShape = oSlide.Shapes.AddTextbox(_ msoTextOrientationHorizontal, 500, 510, 210, 40) 'До т те т ере в о е ые о е ты TextFrame и TextRange oShape.TextFrame.TextRange.Text = Chr(169) & _ " А а е ия ециа ь ы р ов, 2005" 'За и ае я ра ате ь тво oShape.TextFrame.TextRange.Font.Size = 12 oShape.TextFrame.TextRange.Font.Bold = msoTrue Next End Sub
ЛА А
15
П о
и ов
и в Pолжбcр
15.1. О ов о Pолвбппелкaи. О
и ов и в Pолжбcр Application Office — .К , Project Server),
Project ( ,
Project.
-
,
, .
Project Professional 2003, Office, — . Professional:
-
Application Application —
Project
Dim pj As New MSProject.Application pj.Visible = True MsgBox pj.Name & " " & pj.Version
Office, Microsoft Project 11.0 Object Library (
Tools | References). Project, , VBA ,
. , Application.
: Application.ActiveProject.Visible = True ActiveProject.Visible = True
-
Application
, VBA
Project
-
П о
и ов
и в Pолжбcр
363
В Project Professional Word, Excel, PowerPoint
,
Office. Э
— Project
. Server,
Project Server. Ф , Project, Word
VBA. К , ,
,
.
-
, . :
Module1 ,
-
.
15.2. олл ци Projects, о Project и вло ,
о (
Application
,
), ,
Proje t, .
Add()
Projects: Dim oProj As Project Set oProj = Projects.Add()
Д
Add()
. , : 1.
(
mpp).
: Application.FileOpen "D:\Project1.mpp"
А FileOpen()
( ):
For Each Project In Application.Projects If Project.Name = "Project1.mpp" Then Set oProj = Project Exit For End If
л в 15
364 Next MsgBox oProj.Name
2.
Project Server. ,
, :
FileOpen()
Application.FileOpen "\За ор. "\За ор.
и ова о" —
Server. К ject.
и ова о"
,
,
Project Pro-
Project .
,
, Profiles
Application,
,
,
(
,
),
. .
,
-
, ,
,
Server, Server
Project Project
. Project Professional ( . ("\За ор.
,
),
и ова о") Project Server (
-
-
SaveAs()
Project).
, ,
:
-
.
Д
:
Dim oTask As Task Set oTask = oProj.Tasks.Add("За а а 1")
,
Task
.
,
ActualStart, ActualFinish, ActualDuration
. .
, ,
. ,
SetTaskField()
Application.
,
(
,
), Task.ID.
, :
Application.SetTaskField "На а о", Date, False, False, oTask.ID Application.SetTaskField "Д ите ь о ть", "2 ", False, False, oTask.ID
-
П о
и ов
В
и в Pолжбcр
365
,
, . XML.
-
Д
—
.
. —
. ,
Project Server. -
—
Ч
( Project Data Services,
). Э VBA.
— :
Application.EnterpriseResourcesOpen EUID:="", OpenType:=pjReadWrite
( ),
. Д
-
( ,
",
)
— "И
. Д
, —
Application.EnterpriseResourcesImport(),
.
ID
Д
—
.В
.
Project
Add(),
Resources Resource.
—
,
.
SetResourceField(),
: Dim oRes As Resource Set oRes = oProj.Resources.Add("Ива ов Ива ") Application.SetResourceField " и ", " р ово ", False, False, oRes.ID
,
,
:
oRes.StandardRate = 100
. Д
—
Application.EnterpriseResourceGet(), ID .
ID ID
-
л в 15
366
, . . Э
— : —
Assignments
Add(): oTask.Assignments.Add oTask.ID, oRes.ID
—
Application.ResourceAssignment().
, ,
(
-
,
);
— SetTaskField(): SetTaskField Field:="На ва ия ре
,
р ов", Value:="Ива ов Ива [100%]"
,—
. ,
, . . ,
( oRes.EnterpriseText1 = SummaryTask:
"Мо
те
т"),
—
ActiveProject.ProjectSummaryTask.EnterpriseCost1 = "500.00"
З и П о и о л А АН В "
л
о
о ов
о
и
л
о
о
о
15:
: ,
" -
.mpp
: —
•
о
;
: 100
.
.В
.И
—И —2 ;
И (16
).
-
П о
и ов
•
150
и в Pолжбcр
.В
.
367
. И
— —2 —
800
•
.
2
(16 .
).
-
(8 100
). .
. ;
125
.И .В
.
— —1 2
— ;
.
О в К
и
15
,
Project,
:
Public Sub CreateProject() Dim oProject As Project Dim oTask As Task Dim oRes, oResMaterial As Resource Dim sID As String Dim oA As Assignment 'Со ае овы рое т Set oProject = Application.Projects.Add() 'Со ае ерв а а и о ре е яе ат а а а и ро о ите ь о ть Set oTask = oProject.Tasks.Add("В а ыва ие то ов") Application.SetTaskField "На а о", Date, False, False, oTask.ID Application.SetTaskField "Д ите ь о ть", "2 ", False, False, oTask.ID 'Со ае тр ово ре р и а траивае е о во тва Set oRes = oProject.Resources.Add("Ива ов Ива ") oRes.Type = pjResourceTypeWork oRes.StandardRate = 100 'Прои во и а а е ие ре р а а а е oTask.Assignments.Add oTask.ID, oRes.ID 'Со ра яе и е тифи атор ' то ы ото а ать эт sID = oTask.ID
а а и — о а а а
отре ет я, ре е тве иц
'Со ае втор а а и второ тр ово ре р Set oTask = oProject.Tasks.Add("При ива ие о о ")
л в 15
368
oTask.Predecessors = sID Application.SetTaskField "Д ите ь о ть", "2 ", False, False, oTask.ID Set oRes = oProject.Resources.Add("Петров Петр") oRes.Type = pjResourceTypeWork oRes.StandardRate = 150 'Со ае атериа ь ы ре р и а траивае е о во тва Set oResMaterial = oProject.Resources.Add("Пи о атериа ы") oResMaterial.Type = pjResourceTypeMaterial oResMaterial.StandardRate = 800 oResMaterial.MaterialLabel = " . " 'На а ае тр ово ре р oTask.Assignments.Add oTask.ID, oRes.ID 'Д я атериа ь о о ре р а о а ать о и е тво Set oA = oTask.Assignments.Add(oTask.ID, oResMaterial.ID) ' о а ывает я ... в и та ! ' 120 и т (2 а а), т. е. 2 о етра и о атериа ов oA.Work = 120 ' ять о ра яе sID = oTask.ID
и е тифи атор
а а и
'Д я о е е а а и вы о яе е а о ые а е твия Set oTask = oProject.Tasks.Add("По ра а а ора") oTask.Predecessors = sID Application.SetTaskField "Д ите ь о ть", "1 ", False, False, oTask.ID Set oRes = oProject.Resources.Add("Си орова Свет а а") oRes.Type = pjResourceTypeWork oRes.StandardRate = 125 Set oResMaterial = oProject.Resources.Add("Кра oResMaterial.Type = pjResourceTypeMaterial oResMaterial.StandardRate = 100 oResMaterial.MaterialLabel = " а а"
а")
oTask.Assignments.Add oTask.ID, oRes.ID Set oA = oTask.Assignments.Add(oTask.ID, oResMaterial.ID) oA.Work = 120 'Со ра яе рое т в оответ твии oProject.SaveAs "C:\За ор.mpp" End Sub
о тав е
ы и
овия и