Der er sikkert mere elegante måder, men jeg fandt engang denne og oversatte fejlmeddelelserne til dansk. Kopiér det ind i en tekstfil og gem den som "ModulEtEllerAndet.bas". Knyt modulet til dit VB-projekt. Og brug så funktionen RunProgram i din click event. Se de små bemærkninger ved '.
Attribute VB_Name = "modShell"
Option Explicit
'API STUFF ====================================================================
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
Private Const SW_SHOWNORMAL = 1
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
Private Const SE_ERR_ACCESSDENIED = 5
Private Const SE_ERR_ASSOCINCOMPLETE = 27
Private Const SE_ERR_DDEBUSY = 30
Private Const SE_ERR_DDEFAIL = 29
Private Const SE_ERR_DDETIMEOUT = 28
Private Const SE_ERR_DLLNOTFOUND = 32
Private Const SE_ERR_FNF = 2
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_OOM = 8
Private Const SE_ERR_PNF = 3
Private Const SE_ERR_SHARE = 26
'strProgram is the name of a program to run, or a file to open
'EX: calc.exe or c:\test.doc or http:\\
www.microsoft.comPublic Sub RunProgram(strProgram As String)
Dim lRet As Long ' Get the return value
' Execute the API call
lRet = ShellExecute(vbNull, "", strProgram, "", "", SW_SHOWNORMAL)
' If ShellExecute works it will return a number greate than 32
' Otherwise call our ReportError function to see what went wrong
If lRet <= 32 Then
ReportShellExecuteError (lRet)
End If
End Sub
Private Sub ReportShellExecuteError(lErrNum As Long)
Dim strErr As String
Select Case lErrNum
Case ERROR_FILE_NOT_FOUND
strErr = "Protokollen foreligger endnu ikke scannet." & vbCrLf & "Men det vil den snart gøre."
Case ERROR_PATH_NOT_FOUND
strErr = "Stien blev ikke fundet."
Case ERROR_BAD_FORMAT
strErr = "Denne .exe-fil fungerer ikke (ikke en Win32® .exe e.l.)."
Case SE_ERR_ACCESSDENIED
strErr = "Styresystemet giver ikke adgang til denne fil."
Case SE_ERR_ASSOCINCOMPLETE
strErr = "Filtypen er mangelfuld eller ugyldig."
Case SE_ERR_DDEBUSY
strErr = "DDE handlingen kunne ikke fuldføres, fordi en anden DDE handling var under eksekvering."
Case SE_ERR_DDEFAIL
strErr = "DDE handlingen mislykkedes."
Case SE_ERR_DDETIMEOUT
strErr = "DDE handlingen kunne ikke fuldføres, fordi anmodningen udløb."
Case SE_ERR_DLLNOTFOUND
strErr = "Denne dll-fil blev ikke fundet."
Case SE_ERR_FNF
strErr = "Filen blev ikke fundet."
Case SE_ERR_NOASSOC
strErr = "Der er ikke et program associeret med denne filtype. Denne fejlmeddelelse kommer også, hvis man prøver at printe en fil, som ikke kan printes."
Case SE_ERR_OOM
strErr = "Der var ikke nok hukommelse til at udføre denne handling."
Case SE_ERR_PNF
strErr = "Stien blev ikke fundet."
Case SE_ERR_SHARE
strErr = "A sharing violation occurred."
End Select
MsgBox strErr, vbExclamation, "Udførelsen mislykkedes."
End Sub