How to Use ShellExecute in VBA: Master It in 3 Minutes (Excel)

Written by Kasper Langmann

ShellExecute is a versatile function that allows you to perform operations such as opening a document, executing an application, or exploring a folder in Visual Basic for Applications (VBA). This article will guide you through the process of using ShellExecute in VBA, specifically in the context of Microsoft Excel.

Understanding ShellExecute

ShellExecute is a function that is part of the Windows API (Application Programming Interface). It allows you to perform a variety of operations on a specified file. The function is not limited to opening files; it can also be used to print documents, explore directories, and execute applications.

ShellExecute is not a native VBA function, meaning it is not included in the standard VBA library. To use it, you will need to declare it in your VBA module, which we will cover in the next section.

Declaring ShellExecute in VBA

Before you can use ShellExecute in VBA, you must first declare it. This is done using the Declare statement, which tells VBA that you are going to use a function that is not part of its standard library.

The declaration of ShellExecute in VBA looks like this:

Private Declare PtrSafe Function ShellExecute _
    Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

This declaration tells VBA that ShellExecute is a function in the shell32.dll library, and that it takes six parameters. The PtrSafe keyword is used to declare the function as safe to run in 64-bit versions of Office.

Using ShellExecute in VBA

Now that you have declared ShellExecute, you can use it in your VBA code. The function takes six parameters:

  1. hwnd: A handle to the parent window. This is usually set to 0.
  2. lpOperation: The operation to perform. This can be “open”, “print”, etc.
  3. lpFile: The path to the file on which to perform the operation.
  4. lpParameters: Any parameters to pass to the file. This is usually left empty.
  5. lpDirectory: The default directory. This is usually left empty.
  6. nShowCmd: Specifies how to display the window. This is usually set to 1.

Here is an example of how to use ShellExecute to open a file:

Call ShellExecute(0, "open", "C:pathtoyourfile.txt", "", "", 1)

This code will open the file specified by the path in the default application for that file type.

Common Uses of ShellExecute in Excel VBA

ShellExecute can be used in a variety of ways in Excel VBA. Here are a few examples:

  • Opening a document: As shown in the previous example, you can use ShellExecute to open a document in its default application.
  • Printing a document: You can use ShellExecute to print a document. To do this, simply replace “open” with “print” in the lpOperation parameter.
  • Exploring a folder: You can use ShellExecute to open a folder in Windows Explorer. To do this, pass the path to the folder in the lpFile parameter and leave the lpOperation parameter empty.


ShellExecute is a powerful function that allows you to perform a variety of operations on files and folders in VBA. By understanding how to declare and use this function, you can greatly expand the capabilities of your VBA code in Excel.

Remember, ShellExecute is not limited to the examples given in this article. With a bit of creativity, you can use it to perform a wide range of tasks. Happy coding!