Introduction |
|
xi | |
Acknowledgments |
|
xiii | |
|
What You Can Do with Outlook 2007 |
|
|
1 | (14) |
|
Why program with Outlook? |
|
|
2 | (1) |
|
Outlook programming tools |
|
|
2 | (7) |
|
|
9 | (2) |
|
Key Outlook programming components |
|
|
11 | (1) |
|
Showing developer commands |
|
|
11 | (2) |
|
|
13 | (2) |
|
Part I Basic Outlook VBA Design |
|
|
|
The VBA Design Environment |
|
|
15 | (16) |
|
|
15 | (3) |
|
|
18 | (6) |
|
|
24 | (2) |
|
Working with VBA projects |
|
|
26 | (3) |
|
|
29 | (2) |
|
Building Your First VBA Form |
|
|
31 | (26) |
|
Understanding Outlook birthdays and anniversaries |
|
|
31 | (1) |
|
Step 1: What controls do you need? |
|
|
32 | (1) |
|
|
33 | (3) |
|
Step 3: Add user input controls |
|
|
36 | (2) |
|
Step 4: Add command buttons |
|
|
38 | (7) |
|
Step 5: Plan the next development stage |
|
|
45 | (1) |
|
More on VBA form controls |
|
|
45 | (10) |
|
|
55 | (2) |
|
Part II Basic Outlook Form Design |
|
|
|
Introducing Outlook Forms |
|
|
57 | (38) |
|
Understanding the two types of custom forms |
|
|
57 | (2) |
|
Starting the forms designer |
|
|
59 | (1) |
|
The six standard Outlook forms |
|
|
60 | (14) |
|
|
74 | (2) |
|
Working in the forms designer |
|
|
76 | (2) |
|
Saving forms and ending a design session |
|
|
78 | (3) |
|
Creating your first custom contact form |
|
|
81 | (13) |
|
|
94 | (1) |
|
|
95 | (18) |
|
Understanding form regions |
|
|
95 | (2) |
|
Controls for form regions |
|
|
97 | (3) |
|
Creating your first form region |
|
|
100 | (3) |
|
Registering and deploying form regions |
|
|
103 | (7) |
|
Limitations of form regions |
|
|
110 | (1) |
|
Other ideas for form regions |
|
|
110 | (1) |
|
|
111 | (2) |
|
Extending Form Design with Fields and Controls |
|
|
113 | (28) |
|
Understanding fields versus controls |
|
|
113 | (1) |
|
Creating user-defined fields |
|
|
114 | (8) |
|
Adding and removing fields on Outlook forms |
|
|
122 | (6) |
|
|
128 | (9) |
|
Laying out compose and read pages |
|
|
137 | (2) |
|
|
139 | (2) |
|
Part III Writing VBA and VBScript Code |
|
|
|
|
141 | (36) |
|
Understanding when VBA code runs |
|
|
141 | (11) |
|
|
152 | (7) |
|
Writing VBScript code for Outlook forms |
|
|
159 | (9) |
|
Referring to Outlook item properties |
|
|
168 | (3) |
|
Writing other Outlook automation code |
|
|
171 | (4) |
|
|
175 | (2) |
|
|
177 | (84) |
|
|
177 | (2) |
|
Declaring variables and constants |
|
|
179 | (9) |
|
|
188 | (10) |
|
Working with expressions and functions |
|
|
198 | (2) |
|
|
200 | (6) |
|
Working with dates and times |
|
|
206 | (10) |
|
Using arrays, dictionaries, and the Split() and Join() functions |
|
|
216 | (6) |
|
|
222 | (12) |
|
|
234 | (6) |
|
|
240 | (9) |
|
Working with files and other objects |
|
|
249 | (9) |
|
|
258 | (3) |
|
Handling Errors, Testing, and Debugging |
|
|
261 | (28) |
|
|
261 | (8) |
|
Testing and debugging in VBA |
|
|
269 | (8) |
|
Debugging Outlook form VBScript code |
|
|
277 | (10) |
|
|
287 | (2) |
|
Part IV Fundamental Outlook Coding Techniques |
|
|
|
Outlook Programming Basics |
|
|
289 | (24) |
|
Introducing the Outlook object model |
|
|
289 | (6) |
|
Outlook object and collection code techniques |
|
|
295 | (7) |
|
Understanding Outlook security |
|
|
302 | (10) |
|
|
312 | (1) |
|
Responding to Outlook Events in VBA |
|
|
313 | (58) |
|
Application object events |
|
|
314 | (15) |
|
Writing handlers for other object events |
|
|
329 | (4) |
|
Explorers and Explorer events |
|
|
333 | (5) |
|
Inspectors and Inspector events |
|
|
338 | (5) |
|
Folders, Folder, and Items events |
|
|
343 | (4) |
|
|
347 | (9) |
|
Using the Application.Reminder and Reminders events |
|
|
356 | (13) |
|
|
369 | (2) |
|
Coding Key Custom Form Scenarios |
|
|
371 | (30) |
|
Working with Outlook item events |
|
|
371 | (6) |
|
Responding to user input on forms |
|
|
377 | (14) |
|
Handling form and control state issues |
|
|
391 | (9) |
|
|
400 | (1) |
|
Working with Stores, Explorers, and Folders |
|
|
401 | (44) |
|
Information store concepts |
|
|
401 | (2) |
|
Information store techniques |
|
|
403 | (7) |
|
|
410 | (2) |
|
|
412 | (22) |
|
|
434 | (8) |
|
|
442 | (3) |
|
Using Property Accessor and Storageltem |
|
|
445 | (18) |
|
Using the PropertyAccessor object |
|
|
446 | (12) |
|
Using the Storageltem object |
|
|
458 | (4) |
|
|
462 | (1) |
|
Working with Inspectors and Items |
|
|
463 | (38) |
|
|
464 | (3) |
|
|
467 | (7) |
|
|
474 | (10) |
|
|
484 | (8) |
|
|
492 | (8) |
|
|
500 | (1) |
|
Searching for Outlook Items |
|
|
501 | (42) |
|
Introduction to Outlook search methods |
|
|
501 | (2) |
|
|
503 | (18) |
|
Using Items.Find and Items.Restrict |
|
|
521 | (4) |
|
Using Table search techniques |
|
|
525 | (2) |
|
|
527 | (3) |
|
Using Application.AdvancedSearch |
|
|
530 | (11) |
|
|
541 | (2) |
|
|
543 | (26) |
|
Basic item body techniques |
|
|
543 | (2) |
|
Parsing text from a message body |
|
|
545 | (2) |
|
|
547 | (4) |
|
Creating a formatted message |
|
|
551 | (3) |
|
|
554 | (9) |
|
Working with Outlook signatures |
|
|
563 | (5) |
|
|
568 | (1) |
|
Working with Recipients and Address Lists |
|
|
569 | (34) |
|
Key recipient and address list objects |
|
|
570 | (1) |
|
Understanding address lists |
|
|
571 | (6) |
|
Working with item recipients |
|
|
577 | (7) |
|
Reading Recipient and AddressEntry information |
|
|
584 | (4) |
|
Reading free/busy information |
|
|
588 | (6) |
|
Showing the Select Names dialog |
|
|
594 | (7) |
|
|
601 | (2) |
|
|
603 | (16) |
|
Understanding Outlook attachments |
|
|
603 | (3) |
|
Adding attachments to Outlook items |
|
|
606 | (2) |
|
Working with attachments on existing items |
|
|
608 | (10) |
|
|
618 | (1) |
|
|
619 | (40) |
|
Using custom message forms |
|
|
620 | (6) |
|
Working with voting buttons and other custom actions |
|
|
626 | (11) |
|
Sending a message with a specific account |
|
|
637 | (2) |
|
Creating a meeting request |
|
|
639 | (2) |
|
|
641 | (1) |
|
|
642 | (7) |
|
Creating an annual event from a custom date field |
|
|
649 | (9) |
|
|
658 | (1) |
|
|
|
Deploying and Managing Outlook Forms |
|
|
659 | (36) |
|
Understanding Outlook forms architecture |
|
|
660 | (8) |
|
|
668 | (11) |
|
|
679 | (4) |
|
|
683 | (7) |
|
Troubleshooting Outlook forms |
|
|
690 | (3) |
|
|
693 | (2) |
|
Rules, Views, and Administrator Scripting Tasks |
|
|
695 | (42) |
|
Why Outlook scripting is a challenge |
|
|
696 | (1) |
|
Internal scripting with custom message forms |
|
|
697 | (9) |
|
Working with Outlook rules |
|
|
706 | (8) |
|
|
714 | (14) |
|
Internal scripting with folder home pages |
|
|
728 | (7) |
|
|
735 | (2) |
|
Menus, Toolbars, and the Navigation Pane |
|
|
737 | (34) |
|
Programming Outlook menus and toolbars |
|
|
737 | (13) |
|
Working with context menus |
|
|
750 | (13) |
|
Working with the navigation pane and other Explorer panes |
|
|
763 | (7) |
|
|
770 | (1) |
|
Generating Reports on Outlook Data |
|
|
771 | (38) |
|
Built-in report techniques |
|
|
771 | (6) |
|
Coding reports with the Outlook object model |
|
|
777 | (1) |
|
Sending output to Microsoft Excel |
|
|
778 | (10) |
|
Sending output to Microsoft Word |
|
|
788 | (4) |
|
Using Word to build an invoice report |
|
|
792 | (16) |
|
|
808 | (1) |
Index |
|
809 | |