Avatar billede lars_hoeberg Praktikant
04. maj 2004 - 22:55 Der er 19 kommentarer og
1 løsning

Makro til at åbne fil

Hej.

Jeg skal bruge en der vil lave en makro/modul til mig, til at åbne en bestemt fil på computeren gennem Access 2003. Den skal ganske simpelt åbne et worddokument. Kan ikke finde funktionen til dette i 2003-versionen.

Lars
04. maj 2004 - 22:57 #1
Du kan benytte Shell Execute, som du kan finde her: http://www.makeiteasy.dk/eksempler/VBFunktioner.htm
04. maj 2004 - 23:01 #2
ShellExecte kan åbne en hvilken som helst fil - bare den er assioceret med et program i Windows
Avatar billede lars_hoeberg Praktikant
04. maj 2004 - 23:06 #3
Det kan jeg ikke lige finde ud af, du må hjælpe mig
04. maj 2004 - 23:07 #4
ok, du indsætter funktionen i et modul.

Herefter kan du lægge denne linie kode på f.eks. en knap:
ShellExecute "C:\Dokumenter\Dinfil.doc", WIN_NORMAL
Avatar billede lars_hoeberg Praktikant
04. maj 2004 - 23:15 #5
Jeg har en makro, der går ind og danner en word fil, der skal bare en funktion ind i enden af makroen, hvor den så åbner word-filen. Kan du ikke prøve at lave et hurtigt eksempel og maile til mig på lars_hoeberg@stofanet.dk
04. maj 2004 - 23:24 #6
hmm, jo men der er ikke så meget i det og da jeg ikke kender din db, så kan du lige så nemt blive forviret af det som jeg sender dig.
Du indsætter nedenstående kode i et modul.

'**** Kode start ****
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&

Public Function ShellExecute(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
    ShellExecute = lRet & _
                IIf(stRet = "", vbNullString, ", " & stRet)
End Function
'**** Kode slut ****

Herefter kan du indsætte denne linie i slutningen af din anden makro:
ShellExecute "C:\Dokumenter\DinFil.doc", WIN_NORMAL
Avatar billede lars_hoeberg Praktikant
04. maj 2004 - 23:46 #7
hVAD GØR JEG SÅ DEREFTER MED MODULET?
04. maj 2004 - 23:49 #8
øh lukker det og gemmer det (valgfrit navn, dog ikke ShellExecute). Navnet på modulet har ingen betydning for koden.
Access vil nok først spørge om du vil gemme, når du lukker databasen. Men du kan gennemtvinge en "gem" ved at klikke på disketten på værktøjslinien. Men koden virker også selvom du ikke har gemt.
Avatar billede lars_hoeberg Praktikant
04. maj 2004 - 23:54 #9
Jamen hvodan afvikler jeg modulet?
Avatar billede lars_hoeberg Praktikant
04. maj 2004 - 23:57 #10
Og hvordan går jeg ind og ændre i den anden makro og får sat den linie ind?
04. maj 2004 - 23:58 #11
Du afvikler ikke MODULET, men derimod funktionen ShellExecute. Og det sker ved den linie kode, som jeg skrev til sidst:
ShellExecute "C:\Dokumenter\DinFil.doc", WIN_NORMAL

Du skrev, at du allerede havde en makro, som genererede et Word-dokument. Er det en VBA-makro eller en alm. makro?
Da du skrev Makro/Modul gik jeg ud fra, at du i fovejen arbejdede med VBA.

Hvordan ser din anden makro ud?
Avatar billede lars_hoeberg Praktikant
05. maj 2004 - 00:00 #12
Min anden makro er bare genereret i access...
05. maj 2004 - 00:05 #13
ok, så laver du en ny linie under sidste handling i makroen.
Den ny handling skal være: AfspilKode (RunCode hvis du bruger engelsk Access)
Handlingsargumentet skal så være: ShellExecute("C:\Dokumenter\DinFil.doc", 1)

Du har ret i, at det ikke lige var til at vide. Men jeg var overbevist om, at din makro allerede var i VBA, sorry :o)
Avatar billede lars_hoeberg Praktikant
05. maj 2004 - 00:11 #14
Er modulet så overhovedet nødvendigt?
05. maj 2004 - 00:13 #15
ja for i modulet ligger jo funktionen ShellExecute, som bliver kaldt fra makroen.
Modulet kan betragtes som en kontainer, som blot indeholder en masse (eller få) funktioner.
05. maj 2004 - 00:14 #16
Jeg er på vej i seng nu, da jeg har et par unger, som vågner tidligt i morgen. Men jeg er her igen i morgen formiddag, hvis du har flere spm :o)

godnat!
Avatar billede lars_hoeberg Praktikant
05. maj 2004 - 00:16 #17
Okay, mange tak for hjælpen. Har hermed accepteret dit svar. Mange tak
05. maj 2004 - 00:17 #18
selv tak :o)

Jeg tror ikke, at du fik accepteret....du skal huske at klikke på mit navn inden du trykker på Accepter :o)
10. maj 2004 - 21:12 #19
øhh, er du der??
20. maj 2004 - 11:13 #20
??
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