Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hello,
From within my Excel VBA I want to run another file (which will in-turn start the associated application) when certain conditions exist. The Shell statement works on the EXE. I need something similar in concept to work on the actual data file (".anx" and others). It would be the equivalent of double-clicking on a data file in Windows Explorer. Many Thanks for your help. -- Programmer on Budget |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Hello Budget You need to use the ShellExecute API call. Copy this code and paste i into a VBA code module in your project. This will launch any registere file type's associated application Code ------------------- Public Const ShowNormal As Long = Public Const ShowMinimized As Long = Public 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 Lon Public Sub OpenProgram(File_To_Open As String, Show_How As Long Dim RetVa RetVal = ShellExecute(0&, "open", File_To_Open, vbNullString, vbNullString, Show_How End Su ------------------- Example OpenProgram "C:\MyFile.avi", ShowMinimize Sincerely Leith Ros -- Leith Ros ----------------------------------------------------------------------- Leith Ross's Profile: http://www.excelforum.com/member.php...fo&userid=1846 View this thread: http://www.excelforum.com/showthread.php?threadid=56391 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Or use
ActiveWorkbook.FollowHyperlink "C:\Test.pdf" -- Regards Ron de Bruin http://www.rondebruin.nl "Leith Ross" wrote in message ... Hello Budget, You need to use the ShellExecute API call. Copy this code and paste it into a VBA code module in your project. This will launch any registered file type's associated application. Code: -------------------- Public Const ShowNormal As Long = 1 Public Const ShowMinimized As Long = 2 Public 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 Public Sub OpenProgram(File_To_Open As String, Show_How As Long) Dim RetVal RetVal = ShellExecute(0&, "open", File_To_Open, vbNullString, vbNullString, Show_How) End Sub -------------------- Example: OpenProgram "C:\MyFile.avi", ShowMinimized Sincerely, Leith Ross -- Leith Ross ------------------------------------------------------------------------ Leith Ross's Profile: http://www.excelforum.com/member.php...o&userid=18465 View this thread: http://www.excelforum.com/showthread...hreadid=563916 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hello,
The ActiveWorkbook.FollowHyperlink worked perfectly. Thanks. -- Programmer on Budget "Ron de Bruin" wrote: Or use ActiveWorkbook.FollowHyperlink "C:\Test.pdf" -- Regards Ron de Bruin http://www.rondebruin.nl "Leith Ross" wrote in message ... Hello Budget, You need to use the ShellExecute API call. Copy this code and paste it into a VBA code module in your project. This will launch any registered file type's associated application. Code: -------------------- Public Const ShowNormal As Long = 1 Public Const ShowMinimized As Long = 2 Public 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 Public Sub OpenProgram(File_To_Open As String, Show_How As Long) Dim RetVal RetVal = ShellExecute(0&, "open", File_To_Open, vbNullString, vbNullString, Show_How) End Sub -------------------- Example: OpenProgram "C:\MyFile.avi", ShowMinimized Sincerely, Leith Ross -- Leith Ross ------------------------------------------------------------------------ Leith Ross's Profile: http://www.excelforum.com/member.php...o&userid=18465 View this thread: http://www.excelforum.com/showthread...hreadid=563916 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() RetVal = ShellExecute(0&, "open", File_To_Open, vbNullString, vbNullString, Show_How) The "open" program isn't available on all operating systems, XP for example. I think it is a Win 9x command. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Leith Ross" wrote in message ... Hello Budget, You need to use the ShellExecute API call. Copy this code and paste it into a VBA code module in your project. This will launch any registered file type's associated application. Code: -------------------- Public Const ShowNormal As Long = 1 Public Const ShowMinimized As Long = 2 Public 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 Public Sub OpenProgram(File_To_Open As String, Show_How As Long) Dim RetVal RetVal = ShellExecute(0&, "open", File_To_Open, vbNullString, vbNullString, Show_How) End Sub -------------------- Example: OpenProgram "C:\MyFile.avi", ShowMinimized Sincerely, Leith Ross -- Leith Ross ------------------------------------------------------------------------ Leith Ross's Profile: http://www.excelforum.com/member.php...o&userid=18465 View this thread: http://www.excelforum.com/showthread...hreadid=563916 |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() I am running Windows XP Home Edition and the macro works fine. Sincerely, Leith Ros -- Leith Ros ----------------------------------------------------------------------- Leith Ross's Profile: http://www.excelforum.com/member.php...fo&userid=1846 View this thread: http://www.excelforum.com/showthread.php?threadid=56391 |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The "open" program isn't available on all operating systems,
I didn't know that but I use vbNullString in lieu of "open". Regards, Peter T "Chip Pearson" wrote in message ... RetVal = ShellExecute(0&, "open", File_To_Open, vbNullString, vbNullString, Show_How) The "open" program isn't available on all operating systems, XP for example. I think it is a Win 9x command. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Leith Ross" wrote in message ... Hello Budget, You need to use the ShellExecute API call. Copy this code and paste it into a VBA code module in your project. This will launch any registered file type's associated application. Code: -------------------- Public Const ShowNormal As Long = 1 Public Const ShowMinimized As Long = 2 Public 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 Public Sub OpenProgram(File_To_Open As String, Show_How As Long) Dim RetVal RetVal = ShellExecute(0&, "open", File_To_Open, vbNullString, vbNullString, Show_How) End Sub -------------------- Example: OpenProgram "C:\MyFile.avi", ShowMinimized Sincerely, Leith Ross -- Leith Ross ------------------------------------------------------------------------ Leith Ross's Profile: http://www.excelforum.com/member.php...o&userid=18465 View this thread: http://www.excelforum.com/showthread...hreadid=563916 |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Using vbNullString for the lpOperation parameter will invoke the default verb for the file. The default in most instances is open. Sincerely, Leith Ross -- Leith Ross ------------------------------------------------------------------------ Leith Ross's Profile: http://www.excelforum.com/member.php...o&userid=18465 View this thread: http://www.excelforum.com/showthread...hreadid=563916 |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Double clicking a file in explorer invokes the default action, so I suppose
strictly speaking what the OP asked for. My default for text files is to open in my preferred text editor, though I still have an "open" setting to open in Notepad (gives me both options if I right click a file). IOW if I send "open" and a textfile to the API it opens in Notepad, but vbNullString opens in my preferred editor. Subject to "open" always available (you & Chip seem to be in slight disagreement, I don't know), on balance wouldn't the default be the safer choice. Regards, Peter T "Leith Ross" wrote in message ... Using vbNullString for the lpOperation parameter will invoke the default verb for the file. The default in most instances is open. Sincerely, Leith Ross -- Leith Ross ------------------------------------------------------------------------ Leith Ross's Profile: http://www.excelforum.com/member.php...o&userid=18465 View this thread: http://www.excelforum.com/showthread...hreadid=563916 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Double-click and open .csv file | Setting up and Configuration of Excel | |||
When opening an excel file in Windows Explore, it opens to a grey. | Excel Worksheet Functions | |||
Why can't I double click on a file to open it? | Excel Discussion (Misc queries) | |||
can't open file by double click | Excel Discussion (Misc queries) | |||
Cannot double-click to open file | Excel Programming |