> ## Documentation Index
> Fetch the complete documentation index at: https://support.taltech.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Opening and closing an application from VBA

> Open and close BC-Wedge, TCP-Com, or any other Windows program from an Excel, Access, or Word macro.

Visual Basic for Applications (VBA) is part of all Microsoft Office products, including Excel, Access, Word, and more. It can easily be used to open up any Windows program. The example below is configured for the BC-Wedge. Note that if you are running on a 64-bit machine, your path will be different. Your path will also be different if you installed BC-Wedge in a location other than default or if you are trying to open a program other than BC-Wedge.

```
 Sub Auto_Open()
    Dim x As Variant
    Dim Path As String

    ' Set the Path variable equal to the path of your program's installation
    Path = "C:\Program Files\BC-Wedge\BC-Wedge.exe"

    x = Shell(Path, vbNormalFocus)
End Sub
```

Closing any application from VBA can be accomplished with the example code below. This can be used for both our applications or any other windows program. We recommend using this method if you are using BC-Wedge, TCP-Com, COM-File or TCP-File. For other applications, such as WinWedge or B-Coder Pro, there is a much easier method facilitated by DDE (Dynamic Data Exchange). Our WinWedge example can be found at the bottom of the [Launching WinWedge from within Excel](https://support.taltech.com/winwedge/launching-winwedge-from-an-excel-macro.md) support article.

The code is documented below. To change the program to TCP-Com, TCP-File, COM-File or any other application, simply change the name of the exe.

```
Sub TerminateApp()
     '---------------------------------------------------------------------------------------
     ' Terminates the exe process specified.
     ' Uses WMI (Windows Management Instrumentation) to query all running processes
     ' then terminates ALL instances of the exe process held in the variable strTerminateThis.
     '---------------------------------------------------------------------------------------

Dim strTerminateThis As String 'The variable to hold the process to terminate
Dim objWMIcimv2 As Object, objProcess As Object, objList As Object Dim intError As Integer

'Process to terminate – you could specify and .exe program name here
strTerminateThis = "bc-wedge.exe"

'Connect to CIMV2 Namespace and then find the .exe process
Set objWMIcimv2 = GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootcimv2")
Set objList = objWMIcimv2.ExecQuery("select * from win32_process where name='" & strTerminateThis & "'")
For Each objProcess In objList
    intError = objProcess.Terminate 'Terminates a process and all of its threads.
                                    'Return value is 0 for success. Any other number is an error.
    If intError <> 0 Then Exit For
Next

'ALL instances of exe (strTerminateThis) have been terminated
Set objWMIcimv2 = Nothing
Set objList = Nothing
Set objProcess = Nothing
End Sub
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.