ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   shell - open document (https://www.excelbanter.com/excel-programming/408820-shell-open-document.html)

Jarle

shell - open document
 
I want to open a document. Document format may vary.

I try with:

Dim f_name as String
Dim Returnvalue as Variant
f_name ="E:\forlder1\folder2\test.pdf"

ReturnValue = Shell("start " & Chr$(34) & f_name Chr$(34) )

According to a tip on a different web-site this should open the file in the
program it is connected to (he Acrobat Reader).

I always get error message "file not found", but the file is there.
What is wrong?

rgds
Jarle

Ivyleaf

shell - open document
 
On Apr 4, 6:38*pm, Jarle wrote:
I want to open a document. Document format may vary.

I try with:

Dim f_name as String
Dim Returnvalue as Variant
f_name ="E:\forlder1\folder2\test.pdf"

ReturnValue = Shell("start " & Chr$(34) & f_name Chr$(34) )

According to a tip on a different web-site this should open the file in the
program it is connected to (he Acrobat Reader).

I always get error message "file not found", but the file is there.
What is wrong?

rgds
Jarle


Hi Jarle,

In your path, you have "Forlder1" which I reckon should maybe be
"Folder1"? This may be all that is wrong with your code.

Cheers,
Ivan.

Jarle

shell - open document
 
Unfortunately is not that simple.
Folder1/folder2 is just an example. That path that I use is in the program
is different, and I have checked that it is correct. Ehen I paste the
path+filename in the "Run" command in the Start menu (Windows), then the
document opens.
I have also tried to leave out Chr(34) because is seems this gives "".
I have also made sure that I do not have space in pathname or filename.
Still no solution.'

What I want to do is to open a file from VBA code. File might not be office
document. Any suggestion?

Ivyleaf skrev:

On Apr 4, 6:38 pm, Jarle wrote:
I want to open a document. Document format may vary.

I try with:

Dim f_name as String
Dim Returnvalue as Variant
f_name ="E:\forlder1\folder2\test.pdf"

ReturnValue = Shell("start " & Chr$(34) & f_name Chr$(34) )

According to a tip on a different web-site this should open the file in the
program it is connected to (he Acrobat Reader).

I always get error message "file not found", but the file is there.
What is wrong?

rgds
Jarle


Hi Jarle,

In your path, you have "Forlder1" which I reckon should maybe be
"Folder1"? This may be all that is wrong with your code.

Cheers,
Ivan.


Ivyleaf

shell - open document
 
On Apr 4, 8:06*pm, Jarle wrote:
Unfortunately is not that simple.
Folder1/folder2 is just an example. That path that I use is in the program
is different, and I have checked that it is correct. Ehen I paste the
path+filename in the "Run" command in the Start menu (Windows), then the
document opens.
I have also tried to leave out Chr(34) because is seems this gives "".
I have also made sure that I do not have space in pathname or filename.
Still no solution.'

What I want to do is to open a file from VBA code. File might not be office
document. Any suggestion?

Ivyleaf skrev:



On Apr 4, 6:38 pm, Jarle wrote:
I want to open a document. Document format may vary.


I try with:


Dim f_name as String
Dim Returnvalue as Variant
f_name ="E:\forlder1\folder2\test.pdf"


ReturnValue = Shell("start " & Chr$(34) & f_name Chr$(34) )


According to a tip on a different web-site this should open the file in the
program it is connected to (he Acrobat Reader).


I always get error message "file not found", but the file is there.
What is wrong?


rgds
Jarle


Hi Jarle,


In your path, you have "Forlder1" which I reckon should maybe be
"Folder1"? This may be all that is wrong with your code.


Cheers,
Ivan.- Hide quoted text -


- Show quoted text -


Hi Jarle,

This doesn't use the Shell function, but it might do what you are
after:

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
Optional ByVal lpParameters As String, _
Optional ByVal lpDirectory As String, _
Optional ByVal nShowCmd As Long) As Long

Private Const SW_HIDE As Long = 0
Private Const SW_SHOWNORMAL As Long = 1
Private Const SW_SHOWMAXIMIZED As Long = 3
Private Const SW_SHOWMINIMIZED As Long = 2

Sub OpenFile()
Dim FName As String
Dim RetVal
FName = "E:\Folder 1\Folder 2\Test File.pdf"

ShellExecute Application.hwnd, "open", FName _
', vbNullString, "C:\", SW_SHOWNORMAL

End Sub

I found / pinched / adapted (slightly) the code from he
http://www.vbforums.com/showthread.php?t=481233

Cheers,
Ivan.

Peter T

shell - open document
 

"Ivyleaf" wrote in message
...
On Apr 4, 8:06 pm, Jarle wrote:
Unfortunately is not that simple.
Folder1/folder2 is just an example. That path that I use is in the program
is different, and I have checked that it is correct. Ehen I paste the
path+filename in the "Run" command in the Start menu (Windows), then the
document opens.
I have also tried to leave out Chr(34) because is seems this gives "".
I have also made sure that I do not have space in pathname or filename.
Still no solution.'

What I want to do is to open a file from VBA code. File might not be

office
document. Any suggestion?

Ivyleaf skrev:



On Apr 4, 6:38 pm, Jarle wrote:
I want to open a document. Document format may vary.


I try with:


Dim f_name as String
Dim Returnvalue as Variant
f_name ="E:\forlder1\folder2\test.pdf"


ReturnValue = Shell("start " & Chr$(34) & f_name Chr$(34) )


According to a tip on a different web-site this should open the file

in the
program it is connected to (he Acrobat Reader).


I always get error message "file not found", but the file is there.
What is wrong?


rgds
Jarle


Hi Jarle,


In your path, you have "Forlder1" which I reckon should maybe be
"Folder1"? This may be all that is wrong with your code.


Cheers,
Ivan.- Hide quoted text -


- Show quoted text -


Hi Jarle,

This doesn't use the Shell function, but it might do what you are
after:

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
Optional ByVal lpParameters As String, _
Optional ByVal lpDirectory As String, _
Optional ByVal nShowCmd As Long) As Long

Private Const SW_HIDE As Long = 0
Private Const SW_SHOWNORMAL As Long = 1
Private Const SW_SHOWMAXIMIZED As Long = 3
Private Const SW_SHOWMINIMIZED As Long = 2

Sub OpenFile()
Dim FName As String
Dim RetVal
FName = "E:\Folder 1\Folder 2\Test File.pdf"

ShellExecute Application.hwnd, "open", FName _
', vbNullString, "C:\", SW_SHOWNORMAL

End Sub

I found / pinched / adapted (slightly) the code from he
http://www.vbforums.com/showthread.php?t=481233

Cheers,
Ivan.

---------------------------------------------


ShellExecute Application.hwnd, "open", FName _
', vbNullString, "C:\", SW_SHOWNORMAL


For use in Excel 97 & 2000, change
Application.hwnd
to
0&
or use the FindWindow API to get the app's window handle

In later OS may need to change "open" to vbNullString

Regards,
Peter T




Jarle

shell - open document
 
This works fine. Thank you!
I had to put in 0& as suggested by Peter T.
Unfortunatelely I still have a problem and a question:

1. If the document to open is an excel workbook. It seems that I reach an
infinite loop or something. The macro keeps running forever. Any Idea why?
How can I check if the document is an excel document. Then I can use the
application.open (?) command for such files.

2. My excel version is 9.0. From which version will I need to use
application.hwnd?
I would like my program to check version (application.version) and then then
use the correct commandline.

Jarle
Peter T skrev:


"Ivyleaf" wrote in message
...
On Apr 4, 8:06 pm, Jarle wrote:
Unfortunately is not that simple.
Folder1/folder2 is just an example. That path that I use is in the program
is different, and I have checked that it is correct. Ehen I paste the
path+filename in the "Run" command in the Start menu (Windows), then the
document opens.
I have also tried to leave out Chr(34) because is seems this gives "".
I have also made sure that I do not have space in pathname or filename.
Still no solution.'

What I want to do is to open a file from VBA code. File might not be

office
document. Any suggestion?

Ivyleaf skrev:



On Apr 4, 6:38 pm, Jarle wrote:
I want to open a document. Document format may vary.


I try with:


Dim f_name as String
Dim Returnvalue as Variant
f_name ="E:\forlder1\folder2\test.pdf"


ReturnValue = Shell("start " & Chr$(34) & f_name Chr$(34) )


According to a tip on a different web-site this should open the file

in the
program it is connected to (he Acrobat Reader).


I always get error message "file not found", but the file is there.
What is wrong?


rgds
Jarle


Hi Jarle,


In your path, you have "Forlder1" which I reckon should maybe be
"Folder1"? This may be all that is wrong with your code.


Cheers,
Ivan.- Hide quoted text -


- Show quoted text -


Hi Jarle,

This doesn't use the Shell function, but it might do what you are
after:

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
Optional ByVal lpParameters As String, _
Optional ByVal lpDirectory As String, _
Optional ByVal nShowCmd As Long) As Long

Private Const SW_HIDE As Long = 0
Private Const SW_SHOWNORMAL As Long = 1
Private Const SW_SHOWMAXIMIZED As Long = 3
Private Const SW_SHOWMINIMIZED As Long = 2

Sub OpenFile()
Dim FName As String
Dim RetVal
FName = "E:\Folder 1\Folder 2\Test File.pdf"

ShellExecute Application.hwnd, "open", FName _
', vbNullString, "C:\", SW_SHOWNORMAL

End Sub

I found / pinched / adapted (slightly) the code from he
http://www.vbforums.com/showthread.php?t=481233

Cheers,
Ivan.

---------------------------------------------


ShellExecute Application.hwnd, "open", FName _
', vbNullString, "C:\", SW_SHOWNORMAL


For use in Excel 97 & 2000, change
Application.hwnd
to
0&
or use the FindWindow API to get the app's window handle

In later OS may need to change "open" to vbNullString

Regards,
Peter T





Peter T

shell - open document
 
"Jarle" wrote in message
This works fine. Thank you!
I had to put in 0& as suggested by Peter T.
Unfortunatelely I still have a problem and a question:

1. If the document to open is an excel workbook. It seems that I reach an
infinite loop or something. The macro keeps running forever. Any Idea why?
How can I check if the document is an excel document. Then I can use the
application.open (?) command for such files.


If Right$(LCase$(sFile), 4) Like ".xl*" Then
Application.Workbooks.Open sFile
End If

first ought test to see if the file is already open


2. My excel version is 9.0. From which version will I need to use
application.hwnd?


It was introduced in v.10 XL2002

I would like my program to check version (application.version) and then

then
use the correct commandline.


It's probably OK simply to use 0& as I suggested, which defaults to the
desktop's window, but if you prefer following will work for all versions

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long


Dim XLhWin as Long
XLhWin = FindWindow("XLMAIN", Application.Caption)

Regards,
Peter T

PS, watch out for that "open", if vbNulllString works for you stick with
that



Jarle
Peter T skrev:


"Ivyleaf" wrote in message

...
On Apr 4, 8:06 pm, Jarle wrote:
Unfortunately is not that simple.
Folder1/folder2 is just an example. That path that I use is in the

program
is different, and I have checked that it is correct. Ehen I paste the
path+filename in the "Run" command in the Start menu (Windows), then

the
document opens.
I have also tried to leave out Chr(34) because is seems this gives "".
I have also made sure that I do not have space in pathname or

filename.
Still no solution.'

What I want to do is to open a file from VBA code. File might not be

office
document. Any suggestion?

Ivyleaf skrev:



On Apr 4, 6:38 pm, Jarle wrote:
I want to open a document. Document format may vary.

I try with:

Dim f_name as String
Dim Returnvalue as Variant
f_name ="E:\forlder1\folder2\test.pdf"

ReturnValue = Shell("start " & Chr$(34) & f_name Chr$(34) )

According to a tip on a different web-site this should open the

file
in the
program it is connected to (he Acrobat Reader).

I always get error message "file not found", but the file is

there.
What is wrong?

rgds
Jarle

Hi Jarle,

In your path, you have "Forlder1" which I reckon should maybe be
"Folder1"? This may be all that is wrong with your code.

Cheers,
Ivan.- Hide quoted text -

- Show quoted text -


Hi Jarle,

This doesn't use the Shell function, but it might do what you are
after:

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
Optional ByVal lpParameters As String, _
Optional ByVal lpDirectory As String, _
Optional ByVal nShowCmd As Long) As Long

Private Const SW_HIDE As Long = 0
Private Const SW_SHOWNORMAL As Long = 1
Private Const SW_SHOWMAXIMIZED As Long = 3
Private Const SW_SHOWMINIMIZED As Long = 2

Sub OpenFile()
Dim FName As String
Dim RetVal
FName = "E:\Folder 1\Folder 2\Test File.pdf"

ShellExecute Application.hwnd, "open", FName _
', vbNullString, "C:\", SW_SHOWNORMAL

End Sub

I found / pinched / adapted (slightly) the code from he
http://www.vbforums.com/showthread.php?t=481233

Cheers,
Ivan.

---------------------------------------------


ShellExecute Application.hwnd, "open", FName _
', vbNullString, "C:\", SW_SHOWNORMAL


For use in Excel 97 & 2000, change
Application.hwnd
to
0&
or use the FindWindow API to get the app's window handle

In later OS may need to change "open" to vbNullString

Regards,
Peter T








All times are GMT +1. The time now is 10:44 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com