Acknowledgments |
|
xxv | |
Introduction |
|
xxvii | |
Part I Excel VBA Primer |
|
1 | (278) |
|
Chapter 1 Excel Macros: A Quick Start in Excel VBA Programming |
|
|
3 | (40) |
|
|
4 | (3) |
|
Excel Macro-Enabled File Formats |
|
|
4 | (1) |
|
|
5 | (2) |
|
Enabling the Developer Tab in Excel |
|
|
7 | (3) |
|
Using the Built-In Macro Recorder |
|
|
10 | (20) |
|
|
10 | (1) |
|
|
11 | (7) |
|
Using Relative or Absolute References in Macros |
|
|
14 | (4) |
|
|
18 | (6) |
|
|
24 | (3) |
|
Cleaning Up the Macro Code |
|
|
26 | (1) |
|
|
27 | (1) |
|
Testing and Debugging a Macro |
|
|
28 | (1) |
|
Saving and Renaming a Macro |
|
|
29 | (1) |
|
|
30 | (1) |
|
Improving Your Recorded Macros |
|
|
30 | (2) |
|
|
32 | (1) |
|
Various Methods of Running Macros |
|
|
33 | (8) |
|
Running the Macro Using a Keyboard Shortcut |
|
|
33 | (15) |
|
Running the Macro from the Quick Access Toolbar |
|
|
35 | (3) |
|
Running the Macro from a Worksheet Button |
|
|
38 | (3) |
|
|
41 | (2) |
|
Chapter 2 Excel Programming Environment: A Quick Overview of its Tools and Features (VBE) |
|
|
43 | (38) |
|
Understanding the Project Explorer Window |
|
|
44 | (1) |
|
Understanding the Properties Window |
|
|
45 | (1) |
|
Understanding the Code Window |
|
|
46 | (1) |
|
|
47 | (1) |
|
Syntax and Programming Assistance |
|
|
48 | (5) |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
51 | (1) |
|
|
51 | (1) |
|
|
52 | (1) |
|
|
52 | (1) |
|
Comment Block/Uncomment Block |
|
|
53 | (1) |
|
|
53 | (7) |
|
Locating Procedures with the Object Browser |
|
|
59 | (1) |
|
Using the VBA Object Library |
|
|
60 | (2) |
|
Using the Immediate Window |
|
|
62 | (5) |
|
Obtaining Information in the Immediate Window |
|
|
65 | (2) |
|
Working with Worksheet Cells and Ranges |
|
|
67 | (6) |
|
|
67 | (1) |
|
|
67 | (2) |
|
Using the Offset Property |
|
|
69 | (1) |
|
Using the Resize Property |
|
|
70 | (2) |
|
|
72 | (1) |
|
Moving, Copying, and Deleting Cells |
|
|
72 | (1) |
|
Working with Rows and Columns |
|
|
73 | (1) |
|
Obtaining Information about the Worksheet |
|
|
74 | (1) |
|
Entering Data and Formatting Cells |
|
|
74 | (2) |
|
Returning Information Entered in a Worksheet |
|
|
75 | (1) |
|
Finding Out about Cell Formatting |
|
|
75 | (1) |
|
Working with Workbooks and Worksheets |
|
|
76 | (2) |
|
|
78 | (1) |
|
Working with the Excel Application |
|
|
79 | (1) |
|
|
80 | (1) |
|
Chapter 3 Excel VBA Fundamentals: A Quick Reference to Writing VBA Code |
|
|
81 | (42) |
|
Excel Objects, Properties, and Methods |
|
|
81 | (2) |
|
Microsoft Excel Object Model |
|
|
83 | (1) |
|
Writing Simple and Complex VBA Statements |
|
|
84 | (5) |
|
Breaking Up Long VBA Statements |
|
|
88 | (1) |
|
Saving Results of VBA Statements |
|
|
89 | (1) |
|
|
89 | (3) |
|
|
92 | (19) |
|
|
93 | (1) |
|
|
94 | (3) |
|
Specifying the Data Type of a Variable |
|
|
97 | (2) |
|
Assigning Values to Variables |
|
|
99 | (5) |
|
Forcing Declaration of Variables |
|
|
104 | (2) |
|
Understanding the Scope of Variables |
|
|
106 | (3) |
|
Procedure-Level (Local) Variables |
|
|
106 | (1) |
|
|
106 | (3) |
|
|
109 | (1) |
|
|
109 | (1) |
|
Finding a Variable Definition |
|
|
109 | (1) |
|
Determining a Data Type of a Variable |
|
|
109 | (2) |
|
|
111 | (3) |
|
|
112 | (2) |
|
Converting between Data Types |
|
|
114 | (3) |
|
Using Static Variables in VBA Procedures |
|
|
117 | (1) |
|
Using Object Variables in VBA Procedures |
|
|
118 | (3) |
|
Using Specific Object Variables |
|
|
120 | (1) |
|
|
121 | (2) |
|
Chapter 4 Excel VBA Procedures: A Quick Guide to Writing Function Procedures |
|
|
123 | (36) |
|
Understanding Function Procedures |
|
|
124 | (3) |
|
Creating a Function Procedure |
|
|
124 | (3) |
|
Various Methods of Running Function Procedures |
|
|
127 | (2) |
|
Running a Function Procedure from a Worksheet |
|
|
127 | (2) |
|
Running a Function Procedure from Another VBA Procedure |
|
|
129 | (1) |
|
Ensuring Availability of Your Custom Functions |
|
|
129 | (1) |
|
Passing Arguments to Function Procedures |
|
|
130 | (7) |
|
Specifying Argument Types |
|
|
132 | (1) |
|
Passing Arguments by Reference and Value |
|
|
133 | (2) |
|
|
135 | (2) |
|
Testing a Function Procedure |
|
|
137 | (1) |
|
Locating Built-In Functions |
|
|
137 | (1) |
|
Getting to Know the MsgBox Function |
|
|
138 | (9) |
|
Returning Values from the MsgBox Function |
|
|
146 | (1) |
|
Getting to Know the InputBox Function |
|
|
147 | (5) |
|
Determining and Converting Data Types |
|
|
150 | (2) |
|
Using the InputBox Method |
|
|
152 | (5) |
|
|
157 | (2) |
|
Chapter 5 Adding Decisions to Excel VBA Programs: A Quick Introduction to Conditional Statements |
|
|
159 | (22) |
|
Relational and Logical Operators |
|
|
159 | (1) |
|
Using If...Then Statement |
|
|
160 | (4) |
|
Using If...Then...Else Statement |
|
|
164 | (3) |
|
Using If...Then...ElseIf Statement |
|
|
167 | (2) |
|
Nested If...Then Statements |
|
|
169 | (1) |
|
Using the Select Case Statement |
|
|
170 | (5) |
|
Using Is with the Case Clause |
|
|
172 | (1) |
|
Specifying a Range of Values in a Case Clause |
|
|
173 | (1) |
|
Specifying Multiple Expressions in a Case Clause |
|
|
174 | (1) |
|
Writing a VBA Procedure with Multiple Conditions |
|
|
175 | (2) |
|
Using Conditional Logic in Function Procedures |
|
|
177 | (1) |
|
|
178 | (3) |
|
Chapter 6 Adding Repeating Actions to Excel VBA Programs: A Quick Introduction to Looping Statements |
|
|
181 | (16) |
|
Introducing Looping Statements |
|
|
181 | (1) |
|
Understanding Do...While and Do...Until Loops |
|
|
182 | (4) |
|
|
186 | (1) |
|
Executing a Procedure Line by Line |
|
|
187 | (1) |
|
Understanding While...Wend Loop |
|
|
188 | (1) |
|
Understanding For...Next Loop |
|
|
189 | (2) |
|
Understanding For...Each...Next Loop |
|
|
191 | (2) |
|
|
193 | (1) |
|
Using a Do...While Statement |
|
|
194 | (1) |
|
Using Loops and Conditionals |
|
|
195 | (1) |
|
|
196 | (1) |
|
Chapter 7 Storing Multiple Values in Excel VBA Programs: A Quick Introduction to Working with Arrays |
|
|
197 | (22) |
|
|
197 | (6) |
|
|
200 | (1) |
|
Array Upper and Lower Bounds |
|
|
201 | (1) |
|
Initializing and Filling an Array |
|
|
202 | (7) |
|
Filling an Array Using Individual Assignment Statements |
|
|
202 | (1) |
|
Filling an Array Using the Array Function |
|
|
202 | (1) |
|
Filling an Array Using For...Next Loop |
|
|
203 | (1) |
|
Using a One-Dimensional Array |
|
|
203 | (2) |
|
Using a Two-Dimensional Array |
|
|
205 | (1) |
|
|
206 | (3) |
|
|
209 | (3) |
|
|
209 | (1) |
|
|
209 | (1) |
|
|
210 | (1) |
|
The LBound and UBound Functions |
|
|
211 | (1) |
|
Troubleshooting Errors in Arrays |
|
|
212 | (1) |
|
Using the ParamArray Keyword |
|
|
213 | (1) |
|
|
214 | (1) |
|
Sorting an Array with Excel |
|
|
215 | (2) |
|
|
217 | (2) |
|
Chapter 8 Keeping Track of Multiple Values in Excel VBA Programs: A Quick Introduction to Creating and Using Collections |
|
|
219 | (26) |
|
Working with Collections of Objects |
|
|
220 | (8) |
|
Declaring and Using a Custom Collection |
|
|
222 | (1) |
|
Adding Objects to a Custom Collection |
|
|
222 | (2) |
|
Removing Objects from a Custom Collection |
|
|
224 | (4) |
|
Creating and Using Custom Objects |
|
|
228 | (15) |
|
|
230 | (1) |
|
Defining the Properties for the Class |
|
|
230 | (1) |
|
Writing Property Procedures |
|
|
231 | (3) |
|
|
234 | (1) |
|
Creating an Instance of a Class |
|
|
235 | (8) |
|
|
243 | (2) |
|
Chapter 9 Excel Tools for Testing and Debugging: A Quick Introduction to Testing VBA Programs |
|
|
245 | (34) |
|
|
245 | (1) |
|
|
246 | (1) |
|
|
247 | (5) |
|
|
252 | (1) |
|
Using the Immediate Window in Break Mode |
|
|
252 | (1) |
|
Using the Stop and Assert Statements |
|
|
253 | (2) |
|
|
255 | (4) |
|
Removing Watch Expressions |
|
|
259 | (1) |
|
|
259 | (1) |
|
Using the Locals Windows and the Call Stack Dialog Box |
|
|
260 | (2) |
|
Navigating with Bookmarks |
|
|
262 | (1) |
|
|
263 | (2) |
|
|
265 | (6) |
|
Setting Error Trapping Options in a VBA Project |
|
|
268 | (1) |
|
Stepping through VBA Procedures |
|
|
269 | (2) |
|
Stepping Over a Procedure and Running to Cursor |
|
|
271 | (2) |
|
Setting the Next Statement |
|
|
272 | (1) |
|
Showing the Next Statement |
|
|
273 | (1) |
|
Stopping and Resetting VBA Procedures |
|
|
273 | (1) |
|
Terminating a Procedure based on a Condition |
|
|
273 | (4) |
|
|
277 | (2) |
Part II Manipulating Files And Folders With VBA |
|
279 | (64) |
|
Chapter 10 File and Folder Manipulation with VBA |
|
|
281 | (16) |
|
Manipulating Files and Folders |
|
|
282 | (14) |
|
Finding Out the Name of the Active Folder |
|
|
282 | (6) |
|
Changing the Name of a File or Folder |
|
|
283 | (1) |
|
Checking the Existence of a File or Folder |
|
|
284 | (3) |
|
Finding Out the Date and Time the File Was Modified |
|
|
287 | (1) |
|
Finding Out the Size of a File (the FileLen Function) |
|
|
288 | (1) |
|
Returning and Setting File Attributes (the GetAttr and SetAttr Functions) |
|
|
288 | (2) |
|
Changing the Default Folder or Drive (the ChDir and ChDrive Statements) |
|
|
290 | (1) |
|
Creating and Deleting Folders (the MkDir and RmDir Statements) |
|
|
291 | (1) |
|
Copying Files (the FileCopy Statement) |
|
|
292 | (2) |
|
Deleting Files (the Kill Statement) |
|
|
294 | (2) |
|
|
296 | (1) |
|
Chapter 11 File and Folder Manipulation with Windows Script Host (WSH) |
|
|
297 | (24) |
|
Finding Information about Files with WSH |
|
|
300 | (10) |
|
Methods and Properties of FileSystemObject |
|
|
302 | (5) |
|
Properties of the File Object |
|
|
307 | (1) |
|
Properties of the Folder Object |
|
|
308 | (1) |
|
Properties of the Drive Object |
|
|
309 | (1) |
|
Creating a Text File Using WSH |
|
|
310 | (3) |
|
Performing Other Operations with WSH |
|
|
313 | (7) |
|
Running Other Applications |
|
|
313 | (3) |
|
Obtaining Information about Windows |
|
|
316 | (1) |
|
Retrieving Information about the User, Domain, or Computer |
|
|
316 | (1) |
|
|
317 | (2) |
|
|
319 | (1) |
|
|
320 | (1) |
|
Chapter 12 Using Low- Level File Access |
|
|
321 | (22) |
|
|
321 | (1) |
|
Working with Sequential Files |
|
|
322 | (11) |
|
Reading Data Stored in Sequential Files |
|
|
322 | (1) |
|
Reading a File Line by Line |
|
|
323 | (2) |
|
Reading Characters from Sequential Files |
|
|
325 | (3) |
|
Reading Delimited Text Files |
|
|
328 | (1) |
|
Writing Data to Sequential Files |
|
|
329 | (26) |
|
Using Write # and Print # Statements |
|
|
331 | (2) |
|
Working with Random-Access Files |
|
|
333 | (7) |
|
Working with Binary Files |
|
|
340 | (2) |
|
|
342 | (1) |
Part III Controlling Other Applications With VBA |
|
343 | (84) |
|
Chapter 13 Using Excel VBA to Interact with Other Applications |
|
|
345 | (28) |
|
|
345 | (5) |
|
Moving between Applications |
|
|
350 | (1) |
|
Controlling Another Application |
|
|
351 | (4) |
|
Other Methods of Controlling Applications |
|
|
355 | (7) |
|
|
356 | (1) |
|
Understanding Linking and Embedding |
|
|
356 | (2) |
|
|
358 | (1) |
|
|
358 | (3) |
|
|
358 | (2) |
|
|
360 | (1) |
|
Establishing a Reference to a Type Library |
|
|
361 | (1) |
|
Creating Automation Objects |
|
|
362 | (9) |
|
Using the CreateObject Function |
|
|
363 | (1) |
|
Creating a New Word Document Using Automation |
|
|
363 | (2) |
|
Using the GetObject Function |
|
|
365 | (1) |
|
Opening an Existing Word Document |
|
|
366 | (2) |
|
|
368 | (1) |
|
Using Automation to Access Microsoft Outlook |
|
|
369 | (2) |
|
|
371 | (2) |
|
Chapter 14 Using Excel with Microsoft Access |
|
|
373 | (54) |
|
|
374 | (6) |
|
Setting Up References to Object Libraries |
|
|
379 | (1) |
|
|
380 | (1) |
|
Opening an Access Database |
|
|
381 | (9) |
|
Using Automation to Connect to an Access Database |
|
|
381 | (5) |
|
Using DAO to Connect to an Access Database |
|
|
386 | (2) |
|
Using ADO to Connect to an Access Database |
|
|
388 | (2) |
|
Performing Access Tasks from Excel |
|
|
390 | (12) |
|
Creating a New Access Database with DAO |
|
|
390 | (2) |
|
|
392 | (2) |
|
|
394 | (2) |
|
Creating a New Access Database with ADO |
|
|
396 | (1) |
|
|
397 | (3) |
|
Running a Parameter Query |
|
|
400 | (1) |
|
Calling an Access Function |
|
|
401 | (1) |
|
Retrieving Access Data into an Excel Worksheet |
|
|
402 | (18) |
|
Retrieving Data with the GetRows Method |
|
|
402 | (3) |
|
Retrieving Data with the CopyFromRecordset Method |
|
|
405 | (2) |
|
Retrieving Data with the TransferSpreadsheet Method |
|
|
407 | (2) |
|
Using the OpenDatabase Method |
|
|
409 | (3) |
|
Creating a Text File from Access Data |
|
|
412 | (3) |
|
Creating a Query Table from Access Data |
|
|
415 | (2) |
|
Creating an Embedded Chart from Access Data |
|
|
417 | (3) |
|
Transferring the Excel Worksheet to an Access Database |
|
|
420 | (6) |
|
Linking an Excel Worksheet to an Access Database |
|
|
421 | (2) |
|
Importing an Excel Worksheet to an Access Database |
|
|
423 | (1) |
|
Placing Excel Data in an Access Table |
|
|
423 | (3) |
|
|
426 | (1) |
Part IV Enhancing The User Experience |
|
427 | (244) |
|
Chapter 15 Event-Driven Programming |
|
|
429 | (46) |
|
Introduction to Event Procedures |
|
|
430 | (2) |
|
Writing Your First Event Procedure |
|
|
432 | (3) |
|
Enabling and Disabling Events |
|
|
435 | (1) |
|
|
436 | (7) |
|
|
437 | (1) |
|
|
437 | (1) |
|
|
438 | (1) |
|
Worksheet_SelectionChange() |
|
|
439 | (1) |
|
|
439 | (1) |
|
|
440 | (1) |
|
Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) |
|
|
441 | (1) |
|
Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) |
|
|
441 | (2) |
|
|
443 | (9) |
|
|
444 | (1) |
|
|
445 | (1) |
|
|
445 | (1) |
|
Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) |
|
|
446 | (1) |
|
Workbook_BeforePrint(Cancel As Boolean) |
|
|
447 | (1) |
|
Workbook_BeforeClose(Cancel As Boolean) |
|
|
448 | (1) |
|
Workbook_NewSheet(ByVal Sh As Object) |
|
|
449 | (1) |
|
Workbook_WindowActivate(ByVal Wn As Window) |
|
|
449 | (1) |
|
Workbook_WindowDeactivate(ByVal Wn As Window) |
|
|
450 | (1) |
|
Workbook_WindowResize(ByVal Wn As Window) |
|
|
451 | (1) |
|
|
452 | (2) |
|
|
454 | (7) |
|
Writing Event Procedures for a Chart Located on a Chart Sheet |
|
|
456 | (3) |
|
|
457 | (1) |
|
|
457 | (1) |
|
Chart_Select(ByVal ElementID As Long, ByVal Argl As Long, ByVal Arg2 As Long) |
|
|
457 | (1) |
|
|
458 | (1) |
|
|
458 | (1) |
|
Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long) |
|
|
458 | (1) |
|
Writing Event Procedures for Embedded Charts |
|
|
459 | (2) |
|
Events Recognized by the Application Object |
|
|
461 | (6) |
|
|
467 | (5) |
|
|
472 | (2) |
|
|
472 | (1) |
|
|
473 | (1) |
|
|
474 | (1) |
|
Chapter 16 Using Dialog Boxes |
|
|
475 | (16) |
|
|
476 | (4) |
|
File Open and File Save As Dialog Boxes |
|
|
480 | (1) |
|
|
481 | (2) |
|
|
483 | (3) |
|
GetOpenFilename and GetSaveAsFilename Methods |
|
|
486 | (3) |
|
Using the GetOpenFilename Method |
|
|
486 | (1) |
|
Using the GetSaveAsFilename Method |
|
|
487 | (2) |
|
|
489 | (2) |
|
Chapter 17 Creating Custom Forms |
|
|
491 | (34) |
|
|
491 | (9) |
|
Tools for Creating User Forms |
|
|
493 | (6) |
|
Placing Controls on a Form |
|
|
499 | (1) |
|
|
499 | (1) |
|
Sample Application: Info Survey |
|
|
500 | (23) |
|
Setting Up the Custom Form |
|
|
501 | (1) |
|
Inserting a New Form and Setting Up the Initial Properties |
|
|
501 | (1) |
|
Changing the Size of the Form |
|
|
502 | (1) |
|
Adding Buttons, Checkboxes, and Other Controls to a Form |
|
|
503 | (3) |
|
Changing Control Names and Properties |
|
|
506 | (2) |
|
|
508 | (1) |
|
Preparing a Worksheet to Store Custom Form Data |
|
|
509 | (1) |
|
|
510 | (1) |
|
Understanding Form and Control Events |
|
|
511 | (3) |
|
Writing VBA Procedures to Respond to Form and Control Events |
|
|
514 | (8) |
|
Writing a Procedure to Initialize the Form |
|
|
514 | (3) |
|
Writing a Procedure to Populate the Listbox Control |
|
|
517 | (1) |
|
Writing a Procedure to Control Option Buttons |
|
|
517 | (2) |
|
Writing Procedures to Synchronize the Text Box with the Spin Button |
|
|
519 | (1) |
|
Writing a Procedure that Closes the User Form |
|
|
520 | (1) |
|
Transferring Form Data to the Worksheet |
|
|
520 | (2) |
|
Using the Info Survey Application |
|
|
522 | (1) |
|
UserForm: Modal versus Modeless |
|
|
522 | (1) |
|
|
523 | (2) |
|
Chapter 18 Formatting Worksheets with VBA |
|
|
525 | (50) |
|
Performing Basic Formatting Tasks with VBA |
|
|
526 | (15) |
|
|
526 | (5) |
|
|
531 | (2) |
|
|
533 | (2) |
|
Formatting Columns and Rows |
|
|
535 | (1) |
|
Formatting Headers and Footers |
|
|
536 | (2) |
|
Formatting Cell Appearance |
|
|
538 | (3) |
|
Removing Formatting from Cells and Ranges |
|
|
541 | (1) |
|
Performing Advanced Formatting Tasks with VBA |
|
|
541 | (33) |
|
Conditional Formatting Using VBA |
|
|
542 | (4) |
|
Conditional Formatting Rule Precedence |
|
|
546 | (1) |
|
|
547 | (1) |
|
|
547 | (2) |
|
|
549 | (1) |
|
|
549 | (5) |
|
|
554 | (8) |
|
|
562 | (2) |
|
Formatting with Sparklines |
|
|
564 | (6) |
|
Understanding Sparkline Groups |
|
|
566 | (1) |
|
Programming Sparklines with VBA |
|
|
566 | (4) |
|
|
570 | (4) |
|
|
574 | (1) |
|
Chapter 19 Context Menu Programming and Ribbon Customizations |
|
|
575 | (62) |
|
Working with Context Menus |
|
|
575 | (15) |
|
Modifying a Built-In Context Menu |
|
|
576 | (5) |
|
Removing a Custom Item from a Context Menu |
|
|
581 | (1) |
|
Disabling and Hiding Items on a Context Menu |
|
|
582 | (1) |
|
Adding a Context Menu to a Command Button |
|
|
583 | (4) |
|
Finding a FaceID Value of an Image |
|
|
587 | (3) |
|
A Quick Overview of the Ribbon Interface |
|
|
590 | (2) |
|
Ribbon Programming with XML and VBA |
|
|
592 | (31) |
|
Creating the Ribbon Customization XML Markup |
|
|
593 | (5) |
|
Loading Ribbon Customizations |
|
|
598 | (2) |
|
Errors on Loading Ribbon Customizations |
|
|
600 | (1) |
|
Using Images in Ribbon Customizations |
|
|
601 | (2) |
|
About Tabs, Groups, and Controls |
|
|
603 | (1) |
|
Using Various Controls in Ribbon Customizations |
|
|
603 | (11) |
|
|
603 | (1) |
|
Creating Split Buttons, Menus, and Submenus |
|
|
604 | (2) |
|
|
606 | (2) |
|
|
608 | (1) |
|
Creating Combo Boxes and Drop-Downs |
|
|
609 | (2) |
|
Creating a Gallery Control |
|
|
611 | (3) |
|
Creating a Dialog Box Launcher |
|
|
614 | (1) |
|
|
614 | (2) |
|
Repurposing a Built-In Control |
|
|
616 | (1) |
|
|
617 | (2) |
|
The CommandBar Object and the Ribbon |
|
|
619 | (3) |
|
Tab Activation and Group Auto-Scaling |
|
|
622 | (1) |
|
Customizing the Backstage View |
|
|
623 | (6) |
|
Customizing the Microsoft Office Button Menu in Excel 2019 |
|
|
629 | (1) |
|
Customizing the Quick Access Toolbar (QAT) |
|
|
630 | (1) |
|
Modifying Context Menus Using Ribbon Customizations |
|
|
631 | (4) |
|
|
635 | (2) |
|
Chapter 20 Printing and Sending Email from Excel |
|
|
637 | (34) |
|
Controlling the Page Setup |
|
|
638 | (11) |
|
Controlling the Settings on the Page Layout Tab |
|
|
639 | (1) |
|
Controlling the Settings on the Margins Tab |
|
|
640 | (2) |
|
Controlling the Settings on the Header/Footer Tab |
|
|
642 | (2) |
|
Controlling the Settings on the Sheet Tab |
|
|
644 | (3) |
|
Retrieving Current Values from the Page Setup Dialog Box |
|
|
647 | (2) |
|
|
649 | (3) |
|
Changing the Active Printer |
|
|
652 | (1) |
|
Printing a Worksheet with VBA |
|
|
653 | (2) |
|
Disabling Printing and Print Previewing |
|
|
655 | (1) |
|
|
656 | (4) |
|
|
660 | (10) |
|
Sending Email Using the SendMail Method |
|
|
662 | (3) |
|
Sending Email Using the MsoEnvelope Object |
|
|
665 | (1) |
|
Sending Bulk Email from Excel via Outlook |
|
|
666 | (4) |
|
|
670 | (1) |
Part V Excel Tools For Data Analysis |
|
671 | (120) |
|
Chapter 21 Using and Programming Excel Tables |
|
|
673 | (22) |
|
Understanding Excel Tables |
|
|
673 | (2) |
|
Creating a Table Using Built-in Commands |
|
|
675 | (3) |
|
Creating a Table Using VBA |
|
|
678 | (3) |
|
Understanding Column Headings in the Table |
|
|
681 | (2) |
|
Multiple Tables in a Worksheet |
|
|
683 | (1) |
|
Working with the Excel ListObject |
|
|
684 | (6) |
|
Filtering Data in Excel Tables Using AutoFilter |
|
|
690 | (1) |
|
Filtering Data in Excel Tables Using Slicers |
|
|
691 | (3) |
|
Deleting Worksheet Tables |
|
|
694 | (1) |
|
|
694 | (1) |
|
Chapter 22 Programming PivotTables and PivotCharts |
|
|
695 | (60) |
|
Creating a PivotTable Report |
|
|
695 | (7) |
|
Removing PivotTable Detail Worksheets with VBA |
|
|
702 | (3) |
|
Creating a PivotTable Report Programmatically |
|
|
705 | (3) |
|
Creating a PivotTable Report from an Access Database |
|
|
708 | (3) |
|
Using the CreatePivotTable Method of the PivotCache Object |
|
|
711 | (4) |
|
Formatting, Grouping, and Sorting a PivotTable Report |
|
|
715 | (3) |
|
Hiding Items in a PivotTable |
|
|
718 | (1) |
|
Adding Calculated Fields and Items to a PivotTable |
|
|
719 | (9) |
|
Creating a PivotChart Report Using VBA |
|
|
728 | (5) |
|
Understanding and Using Slicers |
|
|
733 | (9) |
|
Creating Slicers Manually |
|
|
733 | (4) |
|
Working with Slicers Using VBA |
|
|
737 | (5) |
|
Data Model Functionality and PivotTables |
|
|
742 | (6) |
|
Programmatic Access to the Data Model |
|
|
748 | (5) |
|
|
753 | (2) |
|
Chapter 23 Getting and Transforming Data in Excel 2019 |
|
|
755 | (36) |
|
Using the Get Data Button |
|
|
756 | (3) |
|
Understanding Power Queries |
|
|
759 | (21) |
|
Using the Advanced Editor |
|
|
780 | (1) |
|
Power Query vs Excel Formula Language and Excel VBA |
|
|
781 | (1) |
|
Learning about various M Language Functions |
|
|
781 | (3) |
|
Creating a Query from a Table |
|
|
784 | (1) |
|
The Get Data and VBA Support |
|
|
784 | (4) |
|
Additional Learning Resources for Using the Get Data Feature |
|
|
788 | (1) |
|
|
789 | (2) |
Part VI Taking Charge Of Programming Environment |
|
791 | (80) |
|
Chapter 24 Programming the Visual Basic Editor (VBE) |
|
|
793 | (50) |
|
The Visual Basic Editor Object Model |
|
|
794 | (1) |
|
Understanding the VBE Objects |
|
|
795 | (2) |
|
Accessing the VBA Project |
|
|
797 | (2) |
|
Finding Information about a VBA Project |
|
|
799 | (1) |
|
|
800 | (1) |
|
|
801 | (11) |
|
Listing All Modules in a Workbook |
|
|
802 | (2) |
|
Adding a Module to a Workbook |
|
|
804 | (1) |
|
|
805 | (1) |
|
Deleting All Code from a Module |
|
|
805 | (1) |
|
|
806 | (2) |
|
Copying (Exporting/Importing) a Module |
|
|
808 | (1) |
|
Copying (Exporting/Importing) All Modules |
|
|
809 | (3) |
|
|
812 | (6) |
|
Listing All Procedures in All Modules |
|
|
812 | (1) |
|
|
813 | (1) |
|
|
814 | (2) |
|
Creating an Event Procedure |
|
|
816 | (2) |
|
|
818 | (8) |
|
Creating and Manipulating UserForms |
|
|
819 | (6) |
|
Copying UserForms Programmatically |
|
|
825 | (1) |
|
|
826 | (8) |
|
Creating a List of References |
|
|
827 | (2) |
|
|
829 | (2) |
|
|
831 | (1) |
|
Checking for Broken References |
|
|
832 | (2) |
|
|
834 | (1) |
|
Working with VBE Menus and Toolbars |
|
|
835 | (6) |
|
Generating a Listing of VBE CommandBars and Controls |
|
|
836 | (1) |
|
Adding a CommandBar Button to the VBE |
|
|
837 | (4) |
|
Removing a CommandBar Button from the VBE |
|
|
841 | (1) |
|
|
841 | (2) |
|
Chapter 25 Calling Windows API Functions from VBA |
|
|
843 | (28) |
|
Understanding the Windows API Library Files |
|
|
844 | (1) |
|
How to Declare a Windows API Function |
|
|
845 | (8) |
|
Passing Arguments to API Functions |
|
|
847 | (1) |
|
Understanding the API Data Types and Constants |
|
|
847 | (3) |
|
Using Constants with Windows API Functions |
|
|
850 | (3) |
|
64-Bit Office and Windows API |
|
|
853 | (4) |
|
Accessing Windows API Documentation |
|
|
857 | (1) |
|
Using Windows API Functions in Excel |
|
|
857 | (13) |
|
|
870 | (1) |
Part VII Excel And Web Technologies |
|
871 | (146) |
|
Chapter 26 HTML Programming and Web Queries |
|
|
873 | (24) |
|
Creating Hyperlinks Using VBA |
|
|
874 | (3) |
|
Creating and Publishing HTML Files Using VBA |
|
|
877 | (6) |
|
|
883 | (12) |
|
Creating and Running Web Queries with VBA |
|
|
886 | (6) |
|
|
892 | (3) |
|
|
895 | (1) |
|
|
896 | (1) |
|
Chapter 27 Excel and Active Server Pages |
|
|
897 | (40) |
|
Introduction to Active Server Pages |
|
|
897 | (1) |
|
|
898 | (1) |
|
|
899 | (1) |
|
Creating an ASP Classic Page |
|
|
900 | (5) |
|
Installing Internet Information Services (IIS) |
|
|
905 | (2) |
|
Creating a Virtual Directory |
|
|
907 | (3) |
|
Setting ASP Configuration Properties |
|
|
910 | (2) |
|
Turning Off Friendly HTTP Error Messages |
|
|
912 | (1) |
|
Running Your First ASP Script |
|
|
913 | (3) |
|
Sending Data from an HTML Form to an Excel Workbook |
|
|
916 | (17) |
|
Sending Excel Data to the Internet Browser |
|
|
933 | (2) |
|
|
935 | (2) |
|
Chapter 28 Using XML in Excel 2019 |
|
|
937 | (80) |
|
|
938 | (2) |
|
Well-Formed XML Documents |
|
|
940 | (3) |
|
|
943 | (1) |
|
Editing and Viewing an XML Document |
|
|
944 | (2) |
|
Opening an XML Document in Excel |
|
|
946 | (4) |
|
|
950 | (6) |
|
|
956 | (5) |
|
|
958 | (3) |
|
|
961 | (1) |
|
|
962 | (2) |
|
|
964 | (3) |
|
Adding an XML Map to a Workbook |
|
|
964 | (1) |
|
Deleting Existing XML Maps |
|
|
965 | (1) |
|
Exporting and Importing Data via an XML Map |
|
|
965 | (1) |
|
Binding an XML Map to an XML Data Source |
|
|
966 | (1) |
|
Refreshing XML Tables from an XML Data Source |
|
|
966 | (1) |
|
|
967 | (5) |
|
Creating XML Schema Files |
|
|
972 | (1) |
|
|
973 | (3) |
|
The XML Document Object Model |
|
|
976 | (3) |
|
Working with XML Document Nodes |
|
|
979 | (2) |
|
Retrieving Information from Element Nodes |
|
|
981 | (7) |
|
|
988 | (8) |
|
Saving an ADO Recordset to Disk as XML |
|
|
988 | (4) |
|
|
992 | (1) |
|
Saving an ADO Recordset into the DOMDocument60 Object |
|
|
993 | (3) |
|
|
996 | (1) |
|
Understanding Open XML Files |
|
|
997 | (5) |
|
Manipulating Open XML Files with VBA |
|
|
1002 | (12) |
|
|
1014 | (3) |
Index |
|
1017 | |