Excel VBA to Interact with Other Applications

Home/Excel VBA/Excel VBA to Interact with Other Applications

Another powerful feature of Excel VBA is to interact with Other Applications. We can deal with Other MS Office Applications (Word, PowerPoint,Access). We can also deal with Other Applications like Internet Explorer, SAS, VBScript from Excel. I will show some examples on interacting with different Application from Excel.

PREMIUM TEMPLATES LIMITED TIME OFFER

ON SALE80% OFF

BROWSE ALL TEMPLATES

50+ Project Management Templates Pack
Excel PowerPoint Word

VIEW DETAILS

Advanced Project Plan & Portfolio Template
Excel Template

VIEW DETAILS

Ultimate Project Management Template
Excel Template

VIEW DETAILS

20+ Excel Project Management Pack
Excel Templates

VIEW DETAILS

20+ PowerPoint Project Management Pack
PowerPoint Templates

VIEW DETAILS

10+ MS Word Project Management Pack
Word Templates

VIEW DETAILS


Interact with PowerPoint from Excel VBA

The following code will show you how to deal and interact with PowerPoint. We can create PowerPoint presentation from Excel or modify the existing presentation using Excel VBA.

Add Reference:Microsoft PowerPoint Object Library

Sub sbPowePoint_SendDataFromExcelToPPT()

'Declarations
    Dim oPPT As PowerPoint.Application
    Dim oPPres As PowerPoint.Presentation
    Dim oPSlide As PowerPoint.Slide
    Dim sText As String
  
'Open PowerPoint
    Set oPPT = New PowerPoint.Application
    Set oPPres = oPPT.Presentations.Add
    oPPT.Visible = True
  
'Add a Slide
    Set oPSlide = oPPres.Slides.Add(1, ppLayoutTitleOnly)
    oPSlide.Select

'Copy a range as a picture and align it
    ActiveSheet.Range("A1:B10").CopyPicture Appearance:=xlScreen, Format:=xlPicture
    oPSlide.Shapes.Paste.Select
    oPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
    oPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
 
'Add the title text
    sText = "My Header"
    oPSlide.Shapes.Title.TextFrame.TextRange.Text = sText

oPPT.Activate

'Release Objects
   
    Set oPSlide = Nothing
    Set oPPres = Nothing
    Set oPPT = Nothing

End Sub

Dealing with MS Word From Excel VBA

The following code will show you how to deal and interact with Word. We can create Word document from scratch or modify the existing document using Excel VBA.

Sub sbWord_FormatingWordDoc()

'Declarations
Dim oWApp As Word.Application
Dim oWDoc As Word.Document
Dim sText As String
Dim iCntr As Long

Set oWApp = New Word.Application
Set oWDoc = oWApp.Documents.Add() '("C:\Documents\Doc1.dot") 'You can specify your template here

'Adding new Paragraph

Dim para As Paragraph
Set para = oWDoc.Paragraphs.Add

para.Range.Text = "Paragraph 1 - My Heading"
para.Format.Alignment = wdAlignParagraphCenter
para.Range.Font.Size = 18
para.Range.Font.Name = "Cambria"

For i = 0 To 2
    Set para = oWDoc.Paragraphs.Add
    para.Space2
Next

Set para = oWDoc.Paragraphs.Add
With para
   .Range.Text = "Paragraph 2 - Some Text for the next Paragraph"
    .Alignment = wdAlignParagraphLeft
   .Format.Space15
   .Range.Font.Size = 14
   .Range.Font.Bold = True
End With

oWDoc.Paragraphs.Add

Set para = oWDoc.Paragraphs.Add
With para
   .Range.Text = "Paragraph 3 - This is another Paragraph, you can create number of paragraphs like this and format it"
    .Alignment = wdAlignParagraphLeft
   .Format.Space15
   .Range.Font.Size = 12
   .Range.Font.Bold = False
End With

oWApp.Visible = True

End Sub

Interact with MS Access from Excel VBA

The following code will show you how to deal and interact with Access.

Add Reference: Microsoft Access Object Library

Sub sbAccess_OpenAForm()

'Declaring Access Application
Dim oAApp As Access.Application

'Connecting Access Data base
Set oAApp = New Access.Application
oAApp.OpenCurrentDatabase ("C:\ExampleDatabase.accdb")

'Opening a From
    With oAApp
        .DoCmd.OpenForm "MyForm", acNormal
        .Visible = True
    End With

End Sub

Interact with Outlook from Excel VBA

Sub sbOutlook_SendAMail()

'Declaration
Dim oOApp As Object
Dim oMail As Object

Set oOApp = CreateObject("Outlook.Application")
Set oMail = oOApp.CreateItem(0)

 On Error Resume Next
' Change the mail address and subject in the macro before you run it.
 With oMail
     .To = "userid@organization.com"
     .CC = ""
     .BCC = ""
     .Subject = "Write Your Subject Here"
     .Body = "Hi, This is example Body Text."

     '.Attachments.Add ("C:\Temp\ExampleFile.xls") '=> To add any Attcahment
     .Display '=> It will display the message
     '.Send '=> It will send the mail
 End With
 On Error GoTo 0

 Set oMail = Nothing
 Set oOApp = Nothing

End Sub

Interact with MS Word from Excel VBA -Another Example

Add Reference: Microsoft Word Object Library

Sub sbWord_ExcelToWord()

'Declarations
Dim oWApp As Word.Application
Dim oWDoc As Word.Document
Dim sText As String
Dim iCntr As Long

set oWApp = New Word.Application
Set oWDoc = oWApp.Documents.Add() '("C:\Documents\Doc1.dot") 'You can specify your template here

For iCntr = 2 To Cells.SpecialCells(xlCellTypeLastCell).Row
    sText = Cells(iCntr, 1)
    sText = sText & " " & Cells(iCntr, 2)
    sText = sText & " " & Cells(iCntr, 3)
    sText = sText & " " & Cells(iCntr, 4)
    oWDoc.Content.InsertAfter (sText)
Next iCntr

oWApp.Visible = True

' Releasing objects
Set oWDoc = Nothing
Set oWApp = Nothing

End Sub

Dealing with Internet Explorer

The following code will show you how to deal and interact with Internet Explorer.

Sub sbIE_OpenASite()

Dim IE As Object

' Create InternetExplorer Object
Set IE = CreateObject("InternetExplorer.Application")

' Send the form data To URL As POST binary request
IE.Navigate "http://www.excely.com/"

' Wait while loading...
Do While IE.Busy
    Application.Wait DateAdd("s", 1, Now)
Loop

IE.Visible = True

'Release
Set IE = Nothing

End Sub

Dealing with Other Applications from Excel VBA – Calculator

The following code will show you how to deal and interact with Calculator.

Sub sbAnyApplication_OpenCalculator()

Dim sProg As String
Dim tID As Double
On Error Resume Next
sProg = "Calc.exe"
tID = Shell(sProg)
If Err <> 0 Then
    MsgBox "Can't Start Calculator"
End If

End Sub

Run VBScript from Excel VBA

Sub sbVBScript_RunVBS()

    Dim SFilename As String
    SFilename = "C:\Temp\Test.vbs" 'Change the file path

    ' Run VBScript file
    Set wshShell = CreateObject("Wscript.Shell")
    wshShell.Run """" & SFilename & """"
  
End Sub

VBA to Attach Send An Excel Chart to Outlook Email

Sub emailingProgram()
    Dim olapp As Outlook.Application
    Dim objmail As Outlook.mailitem
    Dim pos As Integer
    Set olapp = Outlook.Application
    For Each xcell In Sheets("Sheet1").Range(Range("RangetoCopy"), _
        Range("RangetoCopy").End(xlDown))
        msgText = Range("Msg")
        xcell.Activate
        ActiveCell.Offset(0, 1).Select
        'If you think that the email ID is in the pattern firstname.lastname@mail.com use this if block
        'The code will go into the else statement if the First Name is not mentioned
        If Selection.Value = "" Then
            pos = InStr(1, xcell.Value, ".")
            Fname = Mid$(xcell.Value, 1, InStr(1, xcell.Value, ".") - 1)
        Else
            'If you have mentioned the first names in the First Name column this part will read it directly
            Fname = Selection.Value
        End If
        'For each of the cells present in the To List we create a MailItem and send it
        Set objmail = olapp.CreateItem(olMailItem)
        objmail.BodyFormat = olFormatRichText
        'Setting the subject
        
        objmail.Subject = "Example Subject"
        
        'Uncomment the following line of code in case you want to send a plain message
        'objmail.Body = "Hi " + UCase(Mid$(Fname, 1, 1)) + Mid$(Fname, 2) + "," + Chr(13) + Chr(10) + msgText
        
        'For using an image in your mail or an HTML body for styling
        objmail.HTMLBody = "<p><font size='6' face='arial' color='red'><i>Dear " & UCase(Mid$(Fname, 1, 1)) + Mid$(Fname, 2) & "<br></font></p><br><p align='CENTER'><font size='5' face='COMIC SANS' color='RED'>Wishing you a Wonderful Birthday</p><br><br></font><p align='CENTER'><a href='http://www.abrahamsarah.com'><img src='http://www.abrahamsarah.com/bilder/Happy-Birthday005.png' width=450 height=412 border=0></a></a><br><br><br><p align='left'>Thanks & Regards <br><br/> _<p><p align='left'><br>Anshuman Pandey<br>http://www.anshumusing.co.in/</p>"
        objmail.To = emailid@domain.com
        objmail.Send
        Set objmail = Nothing
        
    Next xcell
End Sub

LIMITED TIME OFFER - Get it Now!
Advanced Project Plan Excel Template

 
Related Resource External VBA Reference
By |April 15th, 2013|Excel VBA|0 Comments

About the Author:

Excel VBA Developer having around 8 years of experience in using Excel and VBA for automating the daily tasks, reports generation and dashboards preparation. Valli is sharing to helps us automating daily tasks.

Leave A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.