ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Displaying jpegs. (https://www.excelbanter.com/excel-programming/386095-displaying-jpegs.html)

videor

Displaying jpegs.
 
I am running Office 2000 in WinXP.

I have a need to display several dozen .jpg files, each 10 megs or so in
size in a workbook, with 4 or 5 of them accessable from each worksheet.
Placing each entire picture into the workbook, it becomes unwieldy in size.
I have decided to place buttons on each worsheet with thumbnails of the
picture to be displayed on the button, so that when the button is pressed,
the full size file is displayed.

The following VBA code works:

Dim RetVal
RetVal = Shell("rundll32.exe
C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscre en
picture_name_and_path.jpg", 1)

This displays the full size picture in Windows picture and fax viewer. It is
a solution I can live with. But what I really want to do is to display the
picture using whatever the default .jpg viewer is for that computer just as
if the picture file was double clicked.

There must be some function such as "show using default pic.jpg"

If this is not clear, I can further explain.

Thanks





NickHK

Displaying jpegs.
 
You have a few choices.
..FollowHyperlink will open it in IE.
The ShellExecute API will open in the app associated with that file type.

Private 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
Const SW_SHOWNORMAL = 1

Private Sub CommandButton3_Click()
Dim RetVal As Long

Const FileName As String = "C:\Sample.jpg"

ThisWorkbook.FollowHyperlink FileName
'or
RetVal = ShellExecute(Application.hwnd, "open", FileName, vbNullString,
"C:\", SW_SHOWNORMAL)

End Sub

Or you could keep it all inside Excel, by using an Image control (on the WS
or modeless userform) and load the picture into that.
That way it is not saved with the WB.

NickHK

"videor" wrote in message
. ..
I am running Office 2000 in WinXP.

I have a need to display several dozen .jpg files, each 10 megs or so in
size in a workbook, with 4 or 5 of them accessable from each worksheet.
Placing each entire picture into the workbook, it becomes unwieldy in

size.
I have decided to place buttons on each worsheet with thumbnails of the
picture to be displayed on the button, so that when the button is pressed,
the full size file is displayed.

The following VBA code works:

Dim RetVal
RetVal = Shell("rundll32.exe
C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscre en
picture_name_and_path.jpg", 1)

This displays the full size picture in Windows picture and fax viewer. It

is
a solution I can live with. But what I really want to do is to display the
picture using whatever the default .jpg viewer is for that computer just

as
if the picture file was double clicked.

There must be some function such as "show using default pic.jpg"

If this is not clear, I can further explain.

Thanks







videor

Displaying jpegs.
 
Thanks for the additional ideas. I got the IE version to work, and the Image
control. However, I can't get the ShellExecute to work. The statement
"retval=shellexecute(..." crashes with a "object doesn't support this
property or method" message. the entire statement is highlighted.

bern muller


"NickHK" wrote in message
...
You have a few choices.
.FollowHyperlink will open it in IE.
The ShellExecute API will open in the app associated with that file type.

Private 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
Const SW_SHOWNORMAL = 1

Private Sub CommandButton3_Click()
Dim RetVal As Long

Const FileName As String = "C:\Sample.jpg"

ThisWorkbook.FollowHyperlink FileName
'or
RetVal = ShellExecute(Application.hwnd, "open", FileName, vbNullString,
"C:\", SW_SHOWNORMAL)

End Sub

Or you could keep it all inside Excel, by using an Image control (on the
WS
or modeless userform) and load the picture into that.
That way it is not saved with the WB.




NickHK

Displaying jpegs.
 

This is part of the Windows API. Excel/VBA know nothing about it, so you
have include the declarations that I included, in the top section of the
code module:

Private 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
Const SW_SHOWNORMAL = 1

NickHK


"videor" wrote in message
. ..
Thanks for the additional ideas. I got the IE version to work, and the

Image
control. However, I can't get the ShellExecute to work. The statement
"retval=shellexecute(..." crashes with a "object doesn't support this
property or method" message. the entire statement is highlighted.

bern muller


"NickHK" wrote in message
...
You have a few choices.
.FollowHyperlink will open it in IE.
The ShellExecute API will open in the app associated with that file

type.

Private 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
Const SW_SHOWNORMAL = 1

Private Sub CommandButton3_Click()
Dim RetVal As Long

Const FileName As String = "C:\Sample.jpg"

ThisWorkbook.FollowHyperlink FileName
'or
RetVal = ShellExecute(Application.hwnd, "open", FileName, vbNullString,
"C:\", SW_SHOWNORMAL)

End Sub

Or you could keep it all inside Excel, by using an Image control (on the
WS
or modeless userform) and load the picture into that.
That way it is not saved with the WB.






videor

Displaying jpegs.
 
I had done that. But based on your assurance that was what should be done, I
did a little troubleshooting and found the problem:

The call as you sent it was: (without quotes)

"RetVal = ShellExecute(Application.hwnd, "open", FileName, vbNullString,
"C:\", SW_SHOWNORMAL)"

I changed it to:

"RetVal = ShellExecute(hwnd, "open", FileName, vbNullString,
"C:\", SW_SHOWNORMAL)"

and that seems to work. Any reason not to do it that way?

Thanks for all the help.

bern

"NickHK" wrote in message
...

This is part of the Windows API. Excel/VBA know nothing about it, so you
have include the declarations that I included, in the top section of the
code module:

Private 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
Const SW_SHOWNORMAL = 1

NickHK




NickHK

Displaying jpegs.
 
What is your value of hwnd ?

This should be the Windows handle of the parents window, hence
Application.hwnd.
This only works in Excel 2002 and higher.
In earlier versions, you should use the FindWindow API.

NickHK

"videor" wrote in message
. ..
I had done that. But based on your assurance that was what should be done,

I
did a little troubleshooting and found the problem:

The call as you sent it was: (without quotes)

"RetVal = ShellExecute(Application.hwnd, "open", FileName, vbNullString,
"C:\", SW_SHOWNORMAL)"

I changed it to:

"RetVal = ShellExecute(hwnd, "open", FileName, vbNullString,
"C:\", SW_SHOWNORMAL)"

and that seems to work. Any reason not to do it that way?

Thanks for all the help.

bern

"NickHK" wrote in message
...

This is part of the Windows API. Excel/VBA know nothing about it, so you
have include the declarations that I included, in the top section of the
code module:

Private 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
Const SW_SHOWNORMAL = 1

NickHK







All times are GMT +1. The time now is 03:42 AM.

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