Learn how to control Word, Outlook, and Access using VBA
Introduction
Did you know you can use VBA (Visual Basic for Applications) to control other Microsoft Office applications like Word, Outlook, and Access?
With VBA automation, you can:
✅ Generate Word documents from Excel 📄
✅ Send emails automatically via Outlook 📧
✅ Fetch and update data in Access databases 📊
By the end of this guide, you’ll know how to interact with other Office applications using VBA.
Step 1: Enable References to Other Applications
Before using VBA to control another application, you need to add a reference to that application’s Object Library.
How to Add a Reference in VBA:
1️⃣ Open VBA Editor (ALT + F11
)
2️⃣ Click Tools > References
3️⃣ Find and check:
- Microsoft Word Object Library (for Word automation)
- Microsoft Outlook Object Library (for email automation)
- Microsoft Access Object Library (for Access automation)
4️⃣ Click OK
Now, you’re ready to automate other applications! 🚀
Step 2: Automating Microsoft Word with VBA
You can use VBA to create and modify Word documents directly from Excel.
Example: Create and Write to a Word Document
vbaCopyEditSub CreateWordDocument()
Dim wdApp As Object
Dim wdDoc As Object
' Start Word
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True ' Make Word visible
' Create a new document
Set wdDoc = wdApp.Documents.Add
' Add text to the document
wdDoc.Range.Text = "Hello, this is an automated Word document!"
' Save the document
wdDoc.SaveAs "C:\Users\Public\Automated_Document.docx"
' Close Word
wdDoc.Close
wdApp.Quit
' Release objects
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
✅ What This Does:
✔ Opens Word
✔ Creates a new document
✔ Writes text into it
✔ Saves and closes the document
📌 Tip: Replace "C:\Users\Public\Automated_Document.docx"
with your desired file path.
Step 3: Automating Microsoft Outlook with VBA
You can send emails automatically from Excel to Outlook.
Example: Send an Email from Excel Using VBA
vbaCopyEditSub SendEmail()
Dim OutApp As Object
Dim OutMail As Object
' Start Outlook
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
' Configure email
With OutMail
.To = "recipient@example.com"
.CC = ""
.BCC = ""
.Subject = "Automated Email from VBA"
.Body = "Hello, this is an automated email from Excel using VBA."
.Attachments.Add "C:\Users\Public\SampleAttachment.pdf" ' Optional attachment
.Send ' Send the email
End With
' Release objects
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
✅ What This Does:
✔ Opens Outlook
✔ Creates a new email
✔ Adds recipients, subject, body, and attachments
✔ Sends the email automatically
📌 Tip: Replace "recipient@example.com"
with a valid email address.
Step 4: Automating Microsoft Access with VBA
You can use VBA to read and write data between Excel and Access.
Example: Import Data from Access to Excel
vbaCopyEditSub ImportDataFromAccess()
Dim db As Object
Dim rs As Object
Dim strSQL As String
' Open Access database
Set db = CreateObject("DAO.DBEngine.120").OpenDatabase("C:\Users\Public\SampleDatabase.accdb")
' SQL query to fetch data
strSQL = "SELECT * FROM Customers"
' Open recordset
Set rs = db.OpenRecordset(strSQL)
' Copy data to Excel
Sheet1.Range("A1").CopyFromRecordset rs
' Close objects
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Sub
✅ What This Does:
✔ Connects to an Access database
✔ Runs an SQL query
✔ Copies data into Excel
📌 Tip: Replace "C:\Users\Public\SampleDatabase.accdb"
with your Access database path.
Step 5: Handling Errors in VBA Automation
When automating other applications, errors can occur if the app is closed or not installed.
Best Practices for Error Handling:
🔹 Use On Error Resume Next
to ignore minor errors
🔹 Use On Error GoTo ErrorHandler
for controlled debugging
✅ Example: Error Handling in Outlook Automation
vbaCopyEditSub SafeSendEmail()
On Error GoTo ErrorHandler
Dim OutApp As Object
Dim OutMail As Object
' Attempt to open Outlook
Set OutApp = CreateObject("Outlook.Application")
If OutApp Is Nothing Then
MsgBox "Outlook is not installed!", vbCritical
Exit Sub
End If
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "recipient@example.com"
.Subject = "Test Email"
.Body = "This is a test."
.Send
End With
' Release objects
Set OutMail = Nothing
Set OutApp = Nothing
Exit Sub
ErrorHandler:
MsgBox "An error occurred: " & Err.Description
End Sub
✅ Why Use This?
✔ Prevents crashes if Outlook isn’t installed
✔ Shows an error message instead
Conclusion: Automate Office Apps with VBA
You now know how to:
✅ Automate Word (Create & edit documents)
✅ Automate Outlook (Send emails)
✅ Automate Access (Import data)
✅ Use error handling to prevent crashes