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
|
|||
|
|||
![]() 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 |
#5
![]()
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 |
#6
![]()
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 |
#7
![]()
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 |
#8
![]()
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 |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Peter The reason "open" launches NotePad is this is the registered "open verb in the registry. When you use the default, the system again look to the registry, but in a different place if no verb is given, t select the user's preferred program, if one exists for file typ specified. In the end, it really is just a matter of personal choice 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 |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Fair point :-)
Regards, Peter T "Leith Ross" wrote in message ... Peter, The reason "open" launches NotePad is this is the registered "open' verb in the registry. When you use the default, the system again looks to the registry, but in a different place if no verb is given, to select the user's preferred program, if one exists for file type specified. In the end, it really is just a matter of personal choice. 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 |
#11
![]()
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 |
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 |