PDA

Vollständige Version anzeigen : WinWord-Pfad


Bnice
05.02.2001, 14:35
Hallöchen !

Ich habe leider folgendes Problem:
Ich möchte gerne aus einem Access-Formular nach Betätigung eines Buttons in ein Word-File springen. Dazu muß aber der Pfad von Word bekannt sein.

Gibt es irgendeine Möglichkeit um ein internes Suchen nach Word zu veranlassen ?

Danke
Babsi

Manuela Kulpa
06.02.2001, 10:09
Hallo Babsi!

Mit API und einem kleinen Trick bekommst du es z.B. folgendermassen raus (Erklärungen findest du in den Sourcen):

<font face="Courier New" size="2">' Die API-Deklarationen
Private Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" _
(ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal sResult As String) As Long

Private Declare Function GetTempPath Lib "kernel32" _
Alias "GetTempPathA" _
(ByVal nSize As Long, _
ByVal lpBuffer As String) As Long

Private Const MAX_PATH As Long = 260
Private Const ERROR_FILE_NO_ASSOCIATION As Long = 31
Private Const ERROR_FILE_NOT_FOUND As Long = 2
Private Const ERROR_PATH_NOT_FOUND As Long = 3
Private Const ERROR_FILE_SUCCESS As Long = 32
Private Const ERROR_BAD_FORMAT As Long = 11

' Die Funktion mit der Rückgabe, folgende Beispielaufrufe sind z.B. möglich
' *************************************************************************
' ?FindExecutableFile("doc") für WinWord
' ?FindExecutableFile("xls") für Excel
' ?FindExecutableFile("ppt") für PowerPoint
' ?FindExecutableFile("mdb") für Access
' ?FindExecutableFile("htm") für den Standard-Browser usw. usf.

Public Function FindExecutableFile(sExtension As String) As String

Dim success As Long
Dim sFile As String


sFile = GetExecutable(success, sExtension)

Select Case success
Case Is >= ERROR_FILE_SUCCESS
FindExecutableFile = sFile
Exit Function
Case ERROR_FILE_NO_ASSOCIATION
Case ERROR_FILE_NOT_FOUND
Case ERROR_PATH_NOT_FOUND
Case ERROR_BAD_FORMAT
Case Else:
End Select

'Nichts gefunden, dann MsgBox
MsgBox "Sorry, kein ausführbares Programm gefunden!", vbInformation, "Hinweis"

End Function

Private Function GetExecutable(dwFlagReturned As Long, sExtension As String) As String

Dim hFile As Long
Dim sResult As String
Dim sTempFolder As String

' Wo steht der Temp-Ordner
sTempFolder = GetTempDir()

' erstelle ein Dummy-File für die Suche
hFile = FreeFile
Open sTempFolder & "dummy." & sExtension For Output As #hFile
Close #hFile

' besorge den Namen und den Path des ausführbaren Programmes
sResult = Space$(MAX_PATH)
dwFlagReturned = FindExecutable("dummy." & sExtension, sTempFolder, sResult)

' lösche die Dummy-Datei
Kill sTempFolder & "dummy." & sExtension

' Schreibe die Rückgabe
GetExecutable = TrimNull(sResult)

End Function

Private Function TrimNull(item As String)

Dim pos As Integer

pos = InStr(item, Chr$(0))

If pos Then
TrimNull = Left$(item, pos - 1)
Else: TrimNull = item
End If

End Function

Private Function GetTempDir() As String

Dim nSize As Long
Dim tmp As String

tmp = Space$(256)
nSize = Len(tmp)
Call GetTempPath(nSize, tmp)

GetTempDir = TrimNull(tmp)

End Function</font>
Falls du Fragen hast, melde dich!

LLAP

babsi
06.02.2001, 17:29
Danke Manuela ! ;o)))))) *freu*