VBA Projects

Full Access with Source Code
  • Designed and Developed by PNRao

  • Full Access with VBA Source Code

  • Well Commented Codes Lines

  • Creative and Professional Design

Manage Your Projects

120+ Project Management Templates

Seamlessly manage your projects with our powerful & multi-purpose templates for project management.

120+ PM Templates Includes:
  • 50+ Excel Templates

  • 50+ PowerPoint Templates

  • 25+ Word Templates

Share Post

In the world of programming, efficiency is key. Repetitive tasks can take up a lot of valuable time and resources, hindering productivity. Fortunately, there are ways to automate these tasks, and one such tool is the SendKeys statement in VBA. This statement allows you to literally send keystrokes and mouse clicks to any active window, making it a powerful tool for automating tasks. In this blog post, we will take a closer look at the SendKeys statement, its purpose, syntax, top 5 examples, important notes and remarks, and conclude with a discussion on its usefulness and ask for feedback and views.

VBA SendKeys Statement


The SendKeys statement in VBA allows you to control other applications by sending keystrokes and mouse clicks to them. This is especially useful for automating tasks that involve multiple applications, such as data entry or generating reports. By using this statement, you can save time and reduce the potential for human error.


The syntax for the SendKeys statement is as follows:

SendKeys (keys, [wait])

The ‘keys’ argument is required and specifies the keystrokes or mouse clicks that you want to send to the active window. The ‘wait’ argument is optional and specifies the amount of time (in milliseconds) to wait before executing the next line of code. This is useful when you need to give the active window some time to process the sent keystrokes.

Examples of using VBA SendKeys Statement

1) Opening a specific file in a different application:

To open a file in a different application, you can use the SendKeys statement with the ‘shell’ function. For example, to open a PDF file using Adobe Acrobat, you can use the following code:

Shell "C:\Program Files\Adobe\Acrobat\Acrobat.exe " & "C:\Documents\Report.pdf"

In this example, the first argument in the ‘Shell’ function is the path to the Adobe Acrobat application, and the second argument is the path to the PDF file you want to open. After executing this code, the file will open in Adobe Acrobat.

2) Automatically filling in web forms:

Another common use for the SendKeys statement is filling in web forms automatically. For example, if you have a website that requires you to enter the same information repeatedly, you can automate this process by using the SendKeys statement. The following code snippet fills in a form on a website automatically:

Sub AutoFillForm()
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application") 'create new instance of Internet Explorer
    IE.Visible = True 'make Internet Explorer visible
    IE.navigate "" 'navigate to the web page
    While IE.ReadyState <> 4 'wait for page to load completely
    IE.document.getElementById("name").innertext = "John Smith" 'enter name into form field
    IE.document.getElementById("email").innertext = "" 'enter email into form field
    'click on 'submit' button
End Sub

Note that the exact code may vary depending on the structure of the webpage.

3) Automating data entry:

The SendKeys statement can also be used for automating data entry tasks. For example, if you have a spreadsheet with a large amount of data, you can use the SendKeys statement to quickly fill in the cells. The following code snippet enters data into a specific range of cells in an Excel spreadsheet:

Sub AutoFillData()
    Dim i As Integer
    Dim j As Integer
    Dim x As Integer
    Dim y As Integer
    i = 1 'starting row
    j = 1 'starting column
    x = 10 'ending row
    y = 5 'ending column
    For i = 1 To x
        For j = 1 To y
            Cells(i, j).Select 'select cell
            SendKeys "data" 'enter data
            SendKeys "{TAB}" 'move to next cell horizontally
        SendKeys "{DOWN}" 'move to next row
End Sub

4) Simulating keyboard shortcuts:

The SendKeys statement can also be used to simulate keyboard shortcuts. This is useful when an application does not have built-in shortcuts for a certain function. For example, to print a document in Microsoft Word, you could use the following code:

SendKeys "^p" 'sends the 'Ctrl + P' keystroke to print the active document

5) Automating clicking of buttons:

You can also use the SendKeys statement to automate clicking of buttons in an application. This can be useful for repetitive tasks that require you to click on a specific button. The following code clicks on a button in an application:

Sub AutoClickButton()
    Dim hWnd As Long
    Dim buttonClass As Long
    hWnd = FindWindow(vbNullString, "Application Name") 'find the application window
    buttonClass = FindWindowEx(hWnd, 0&, "classname", "Button Name") 'find the button in the application
    SendMessage buttonClass, BM_CLICK, 0&, 0& 'click on the button
End Sub

Important Notes and Remarks

  • The SendKeys statement can only send keystrokes and mouse clicks to the active window. This means that if you switch to a different window while the code is running, the keystrokes will be sent to that window instead.
  • It is important to use the ‘wait’ argument in the SendKeys statement to give the active window some time to process the sent keystrokes. Failure to do so may result in incomplete data entry or other errors.
  • The SendKeys statement can sometimes be unreliable, as it sends keystrokes and mouse clicks to the active window regardless of its state or position. Therefore, it is important to use it with caution and test thoroughly.

In conclusion, the SendKeys statement in VBA is a powerful tool for automating tasks that involve multiple applications or repetitive actions within an application. It gives you the ability to literally send keystrokes and mouse clicks to the active window, allowing you to save time and reduce the potential for human error.

We have discussed the purpose, syntax, examples, and important notes and remarks for the SendKeys statement. We hope this post has been helpful in understanding this statement and its functionalities.

We would love to hear your feedback and views on the SendKeys statement. Have you used it before? What are some other examples you can share? Do you have any tips or tricks for using it effectively? Let us know in the comments below. Happy coding!

Effortlessly Manage Your Projects and Resources
120+ Professional Project Management Templates!

A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.

Project Management Templates

All-in-One Pack
120+ Project Management Templates

Essential Pack
50+ PM Templates

Excel Pack
50+ Excel PM Templates

PowerPoint Pack
50+ Excel PM Templates

MS Word Pack
25+ Word PM Templates

Ultimate Project
Management Template
Ultimate Resource
Management Template
Project Portfolio
Management Templates
Categories: VBA StatementsTags: , Last Updated: September 28, 2023

Leave A Comment