![]() |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Explore
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 |
Open a non xls file (emulate the double-click from Windows Exp
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 |
All times are GMT +1. The time now is 01:40 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com