Ivan D-J <Mail@mail.dk> wrote in message
news:3b9a43d3$0$919$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Er der en der kan hjælpe?
>
> Jeg har i en MS Access 97 database behov for lokalisering af:
> Microsoft Word
> Microsoft Excel
> Microsoft Powerpoint
> Microsoft Access
> Microsoft Outlook
> Stien/path skal udtrykkes som en streng, og fungere i både W95, W98
> og W2K. Er det muligt at fange den i Registreringsdatabasen, eller
> lignende(venligst et eksempel)?
> På forhånd Tak!
>
> Ivan D-J
Hej Ivan
Jeg har fundet på en løsning, der nok ikke er den bedste, men
den ser da ud til at virke. Nedenstående kode stump kan finde
det program, der er associeret med en bestemt type fil. For
at kode skal virke hos dig, skal du nok rette i arrayet myPrograms,
så det peger på filer der findes. Stierne bliver så spyttet ud i
Fejlfindingsviduet. Da jeg ikke har outlook, har jeg ikke inkluderet
denne, men det burde være let at tilføje.
Metoden burde virke på alle Windows fra NT 3.1 og Win95.
Håber du kan bruge den til noget.
Option Explicit
Const MAX_FILENAME_LEN = 250
Private Declare Function FindExecutable _
Lib "shell32.dll" Alias "FindExecutableA" _
(ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String) As Long
Private Sub TestIt()
'Modified example taken from:
'KPD-Team 1999
'URL:
http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim i As Integer, j As Integer
Dim s2 As String
Dim myPrograms
Const docDir = "C:\My Documents\"
' Jeg har ikke outlook, men det burde være det samme.
' Disse stier skal pege på dokumenter, der findes
myPrograms = Array(docDir & "Dok1.doc", _
docDir & "Fra 75'eren\Tabel.xls", _
docDir & "Fra 75'eren\Power.ppt", _
docDir & "FileChooser.mdb")
'Check if the files exists
For j = 0 To UBound(myPrograms)
If Dir(myPrograms(j)) = "" Then
MsgBox "File not found!", vbCritical
Exit Sub
Else
'Create a buffer
s2 = String(MAX_FILENAME_LEN, 32)
'Retrieve the name and handle of the
'executable, associated with this file
i = FindExecutable(myPrograms(j), vbNullString, s2)
If i > 32 Then
' For at undgå problemer med null-char, kan dog give
' problem med nogle filer.
Debug.Print Left$(s2, _
InStr(s2, ".exe") + Len(".exe"))
Else
MsgBox "No association found !"
End If
End If
Next j
End Sub
PS. Hvorfor returnerer funktionen FindExecutable en null-char
imellem Program og Files i "C:\Program Files\", når man søger
efter en Access fil, men et mellemrum, når det er Word, Excel
eller powerpoint ???
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Se SpaceCommunicator - en peer-to-peer chat-applikation i Java