VBA и программирование в MS Office для пользователей спец. курс 5-94157-863-6

В основу книги положен материал учебного курса "Программирование в Microsoft Office для пользователей ", котор

235 43 4MB

Russian Pages 360 Year 2006

Report DMCA / Copyright

DOWNLOAD PDF FILE

Recommend Papers

VBA и программирование в MS Office для пользователей спец. курс
 5-94157-863-6

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

П

и лови —

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

о тав е

ы и

овия и