ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Open a non xls file (emulate the double-click from Windows Explore (https://www.excelbanter.com/excel-programming/368015-open-non-xls-file-emulate-double-click-windows-explore.html)

Budget Programmer

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

Leith Ross[_676_]

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


Ron de Bruin

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




Chip Pearson

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




Leith Ross[_677_]

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


Peter T

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






Leith Ross[_679_]

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


Peter T

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




Leith Ross[_683_]

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


Peter T

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




Budget Programmer

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