Solved

How to open other applications....vb6

Posted on 2004-08-20
6
622 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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
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…

863 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now