Avatar billede meiland Mester
18. december 2003 - 16:40 Der er 2 kommentarer og
1 løsning

Åbne fil via knap i form

Hej alle !

Jeg skal gerne have lavet en knap på en form, der kalder en pdf-fil. Hvilken fil afhænger af den aktuelle post.

Hvis formen viser adresse1 skal knappen kalde adresse1.pdf, hvis adresse2 så adresse2.pdf osv.

Tabellen hedder Ejendomme, hvor Adresse er feltet.
PDF-filer ligger på C:\ejendomme\pdf

Jeg er klar over at jeg skal over i noget VBA og derfor stiller jeg spøregsmålet til jer eksperter.
Avatar billede jkrons Professor
18. december 2003 - 18:49 #1
Her er en mulig løsning:

Private Sub Kommandoknap49_Click()
    Dim a As Variant
    If Me!adresse = "adresse1" Then
        a = Shell("c:\programmer\adobe\acrobat 6.0\reader\acrord32.exe c:\ejendomme\pdf\adresse1.pdf", vbMaximizedFocus)
    ElseIf Me!adresse = "adresse2" Then
        a = Shell("c:\programmer\adobe\acrobat 6.0\reader\acrord32.exe c:\ejendomme\pdf\adresse2.pdf", vbMaximizedFocus)
    End If
End Sub

Denne funktion åbner adreese1.pdf hvis der står Adresse1 i formularen. Står der Adresse2 åbnes adresse2.pdf. Står der ingen af delene åbnes ingenting.

Stien til acroreader skalændres til det, der passer til din installtion.
18. december 2003 - 21:11 #2
jkrons (og meiland)-> Shell er lidt primitiv, da den kræver en eksakt sti til værtsprogrammet. Brug i stedet funktionen fHandleFile og ShellExecute.

Put nedenstående kode i et modul.

Private Declare Function apiShellExecute 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

'***App Window Constants***
Public Const WIN_NORMAL = 1        'Open Normal
Public Const WIN_MAX = 3            'Open Maximized
Public Const WIN_MIN = 2            'Open Minimized

'***Error Codes***
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&

'***************Usage Examples***********************
'Open a folder:    ?fHandleFile("C:\TEMP\",WIN_NORMAL)
'Call Email app:    ?fHandleFile("mailto:dash10@hotmail.com",WIN_NORMAL)
'Open URL:          ?fHandleFile("http://home.att.net/~dashish", WIN_NORMAL)
'Handle Unknown extensions (call Open With Dialog):
'                  ?fHandleFile("C:\TEMP\TestThis",Win_Normal)
'Start Access instance:
'                  ?fHandleFile("I:\mdbs\CodeNStuff.mdb", Win_NORMAL)
'****************************************************

Function fHandleFile(stFile As String, lShowHow As Long)
Dim lRet As Long, varTaskID As Variant
Dim stRet As String
    'First try ShellExecute
    lRet = apiShellExecute(hWndAccessApp, vbNullString, _
            stFile, vbNullString, vbNullString, lShowHow)
           
    If lRet > ERROR_SUCCESS Then
        stRet = vbNullString
        lRet = -1
    Else
        Select Case lRet
            Case ERROR_NO_ASSOC:
                'Try the OpenWith dialog
                varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " _
                        & stFile, WIN_NORMAL)
                lRet = (varTaskID <> 0)
            Case ERROR_OUT_OF_MEM:
                stRet = "Error: Out of Memory/Resources. Couldn't Execute!"
            Case ERROR_FILE_NOT_FOUND:
                stRet = "Error: File not found.  Couldn't Execute!"
            Case ERROR_PATH_NOT_FOUND:
                stRet = "Error: Path not found. Couldn't Execute!"
            Case ERROR_BAD_FORMAT:
                stRet = "Error:  Bad File Format. Couldn't Execute!"
            Case Else:
        End Select
    End If
    fHandleFile = lRet & _
                IIf(stRet = "", vbNullString, ", " & stRet)
End Function


På formularens knap lægger du så bare denne kode:
call fHandleFile(Me!Adresse, WIN_NORMAL)
Avatar billede meiland Mester
19. december 2003 - 01:23 #3
jkrons: Desværre kan jeg ikke bruge dit forslag af flere grunde. Det største problem er af jeg har over 500 adresser i databasen.

Thomasjepsen: Det vil jeg prøve når jeg komme på arbejde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester