04. maj 2004 - 22:55Der 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.
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
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
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
ø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.
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.
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)
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.
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.