Solved

How to open other applications....vb6

Posted on 2004-08-20
6
631 Views
Last Modified: 2008-03-17
I have command buttons to:

Shell "Excel.exe"                                    '<-- to open just blank excel
Shell "C\MyFolder\MyFile.xls"                  '<-- to open MyFile.xls

I need the same two lines to open Access and Word.

Thanks,
0
Comment
Question by:Mike Eghtebas
6 Comments
 
LVL 15

Expert Comment

by:Colosseo
ID: 11856203
Hi

hope this is what you mean

Shell "msaccess.exe" '<--- opens access

Shell "winword.exe" '<---- opens word

Regards

Scott
0
 
LVL 33

Author Comment

by:Mike Eghtebas
ID: 11856813
Shell "winword.exe" '<---- error 53: File not found

Same with other two.
0
 
LVL 15

Expert Comment

by:Colosseo
ID: 11856830
Hi

Have you searched your computer for winword.exe and msaccess.exe?

If installed to the default folder they should both be in something like

c:\Program Files\Microsoft Office\Office10\

You might need to put in the full path, for example on my computer it would be

shell "c:\Program Files\Microsoft Office\Office10\msaccess.exe"

 but i wouldnt have thought so

Scott
0
Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

 

Expert Comment

by:Mandtis
ID: 11857024
Here's some old VB6 code I used myself on a program to execute external programs, sorry if the comments and variable names are in spanish.
You would call it like:
Ejecutar "c:\Program Files\Microsoft Office\Office10\msaccess.exe" , True/False , ""
Where the first parameter is the program to launch, the second one is if we want the program to run visible/minimized/hidden, and the last one are the parameters we want to give it.
Functions DirectorioDelPrograma will return the dir were the exe file is stored and UnidadDelPrograma the drive (in the previous case it would return "Program Files\Microsoft Office\Office10" and "C:") so we can switch to that drive&dir before launching it, and return to the folder where we were previously.
If the "program" we are launching ends with *.reg, it will silently be imported with regedit, if it is a file associated with a program, it will be opened with that program (if we do a Ejecutar c:\temp.txt, temp.txt will open with Notepad).
Hope it helps.

----------[cut]----------
'Mirar si existe un exe, si es asi cambiar a su directorio,
'ejecutarlo, y volver al viejo dir
Public Function Ejecutar(ByVal tmpPrograma As String, tmpVisible As Boolean, ByVal Parametros As String) As Double
Dim locUnidad, locDir, locExtension As String
  On Error GoTo HayError
 
  locExtension = Mid(tmpPrograma, Len(tmpPrograma) - 3, 4)
  If ExisteFichero(tmpPrograma) Then
    If locExtension = ".exe" Or locExtension = ".bat" Or locExtension = ".com" Then
      locDir = CurDir()
      locUnidad = UnidadDelPrograma(locDir)
      ChDrive UnidadDelPrograma(tmpPrograma)
      ChDir DirectorioDelPrograma(tmpPrograma)
      If tmpVisible Then
        Ejecutar = Shell(tmpPrograma & " " & Parametros, vbNormalFocus)
      Else
        Ejecutar = Shell(tmpPrograma & " " & Parametros, vbHide)
      End If
      ChDrive locUnidad
      ChDir locDir
    ElseIf locExtension = ".reg" Then
      Ejecutar = Shell("regedit -s " & tmpPrograma, vbNormalFocus)
    Else
      Ejecutar = Shell("start " & tmpPrograma, vbNormalFocus)
    End If
  End If
  GoTo Continuar
HayError:

Continuar:
End Function


'Recibe un programa con path, devuelve ese path
Public Function DirectorioDelPrograma(ByVal tmpPrograma As String) As String
Dim locPosicion As Integer
  On Error GoTo HayError
  locPosicion = InStrRev(tmpPrograma, "\")
  DirectorioDelPrograma = Mid(tmpPrograma, 1, locPosicion)
  GoTo Continuar
HayError:

Continuar:
End Function

'Devuelve la unidad de un programa con path entero
Public Function UnidadDelPrograma(ByVal tmpPrograma As String) As String
  On Error GoTo HayError
  UnidadDelPrograma = Mid(tmpPrograma, 1, 1)
  GoTo Continuar
HayError:

Continuar:
End Function
----------[cut]----------
0
 
LVL 5

Accepted Solution

by:
Z03niE earned 250 total points
ID: 11857601
Wow.... what a huge code you got there Mandtis .
I don't think shell command can execute other program than executables(say .exe, .bat or .com).
I think to do this you should use API's shell execute function .

'First off declare the function
Private Declare 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

'then use it in the command button, say the name of the command button is CMDLauncher in a form named form1
Private Sub CMDLauncher_Click()
        Dim I As Long
        'this one runs the excel document
        I = ShellExecute(Form1.HWnd, "open", "C\MyFolder\MyExcellFile.xls", vbNullString, vbNullString, 1)  
        'this one runs the word document
        I = ShellExecute(Form1.HWnd, "open", "C\MyFolder\MyWordFile.doc", vbNullString, vbNullString, 1)  
        'this one runs the access document
        I = ShellExecute(Form1.HWnd, "open", "C\MyFolder\MyAccessFile.mdb", vbNullString, vbNullString, 1)  

        'this one runs the excel application
        I = ShellExecute(Form1.HWnd, "open", "excel", vbNullString, vbNullString, 1)  
        'this one runs the word application
        I = ShellExecute(Form1.HWnd, "open", "winword", vbNullString, vbNullString, 1)  
        'this one runs the access application
        I = ShellExecute(Form1.HWnd, "open", "msaccess", vbNullString, vbNullString, 1)  

        'and so on , remember to change the form1 with your form name.
end sub

Hope that work for you.
0
 
LVL 33

Author Comment

by:Mike Eghtebas
ID: 11862109
Thanks.
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question