Toon posts:

VBA Shell and JPG openen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, ik heb misschien een wat simpele vraag. Ik wil namelijk op een formulier in Access plaatjes toevoegen. Het gaat om een formulier waarin een auto staat, waaran 5 foto's zijn toegevoegd. Die foto's knal ik in een picture op mijn formulier. Dit werkt allemaal wel goed. Nadeel is dat de plaatjes op m'n schijf 800x600 zijn en ik de plaatjes op mijn form als een soort 'thumbnail' weergeef.

Hiervoor wil ik een stukje code achter de pictures plakken, dat het plaatje opent (in de standaard windows viewer). De code is als volgt:

[code]
Private Sub Afbeelding21_Click()
On Error GoTo Err_Afbeelding21_Click
Dim stAppName As String
stAppName = Afbeelding_1
Call shell(stAppName, vbMaximizedFocus)
Exit_Afbeelding21_Click:
Exit Sub
Err_Afbeelding21_Click:
MsgBox Err.Description
Resume Exit_Afbeelding21_Click
End Sub

het probleem is dat hij het plaatje niet opent. Ik krijg de melding over een 'ongeldige procedure aanroep'. Dus ik denk dat hij dit bestandsformaat niet op deze manier kan openen.

Verwijderd

heb je in deze code fictieve benamingen gebruikt of staat het zo echt in je vb script achter access?

Verwijderd

Topicstarter
is niet fictief. Deze benamingen heb ik gebruikt

Verwijderd

Topicstarter
StAppName is een veld in een tabel (dat onzichtbaar op het formulier is aangebracht) Hierin staat een bestandsnaam

Verwijderd

en hoe weet hij welke applicatie hij moet openen?

Verwijderd

Topicstarter
ik denk dat daar het probleem ook zit. Waarschijnlijk opent hij de jpg's niet met het standaard programma dat daarvoor bestemd is. Ik moet dus waarschijnlijk een opdracht generenen in de trend van:

"viewer.exe /bestandsnaam".. Maar ik weet dus niet welke applicatie en vorm ik hiervoor moet gebruiken

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
This example opens MyDoc.doc as a read-only document.

Sub OpenDoc()
    Documents.Open FileName:="C:\MyFiles\MyDoc.doc", ReadOnly:=True
End Sub
This example opens Test.wp using the WordPerfect 6.x file converter. 

Sub OpenDoc2()
    Dim fmt As Variant
    fmt = Application.FileConverters("WordPerfect6x").OpenFormat
    Documents.Open FileName:="C:\MyFiles\Test.wp", Format:=fmt
End Sub


Maybe heb je hier iets aan, openen van een word docuement vanuit vb

[ Voor 5% gewijzigd door Verwijderd op 27-11-2003 21:25 ]


Verwijderd

Topicstarter
mooi opgelost!! heb zelf gebruik gemaakt van iexplore. Die werkt ook, nu open ik het plaatje in een browservenster.

Thx 4 da reply

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Nog even ter aanvulling een manier om elk willekeurig type document te openen.

Met de volgende code moet je de functie lngSHELL_StartDocument met het volledige pad van een bestand aanroepen en zoekt Windows zelf uit met welk programma het geopend wordt.
DOC bestanden worden bijvoorbeeld met Word geopend en JPG bestanden met ACDSee, net wat voor programma's je geinstalleerd hebt.

Je moet deze code trouwens in een module stoppen in verband met de API declaraties, het werkt niet direct in een form.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Option Explicit

Private Declare Function SHELLAPI_ShellExecute Lib "shell32.dll" Alias _
      "ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As _
      String, ByVal lpszFile As String, ByVal lpszParams As String, _
      ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long

Private Declare Function GetDesktopWindow Lib "user32" () As Long

Const SW_SHOWNORMAL = 1

Const SE_ERR_FNF = 2&
Const SE_ERR_PNF = 3&
Const SE_ERR_ACCESSDENIED = 5&
Const SE_ERR_OOM = 8&
Const SE_ERR_DLLNOTFOUND = 32&
Const SE_ERR_SHARE = 26&
Const SE_ERR_ASSOCINCOMPLETE = 27&
Const SE_ERR_DDETIMEOUT = 28&
Const SE_ERR_DDEFAIL = 29&
Const SE_ERR_DDEBUSY = 30&
Const SE_ERR_NOASSOC = 31&
Const ERROR_BAD_FORMAT = 11&

Public Function lngSHELL_StartDocument(ByVal strDocumentNaam_IN As String) As Long
    
    Dim Scr_hDC As Long
    Dim lngResult As Long
    
    Scr_hDC = GetDesktopWindow()
    lngResult = SHELLAPI_ShellExecute(Scr_hDC, "Open", strDocumentNaam_IN, "", "C:\", SW_SHOWNORMAL)

    lngSHELL_StartDocument = lngResult
    
End Function
Pagina: 1