Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
508to512
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Word Dokument aus Excel öffen

Word Dokument aus Excel öffen
04.11.2004 10:17:48
Biene
Hallo,
ich habe ein Problem und hoffe das mir irgendjemand weiter helfen kann.
Ich will aus einer Userform in Excel ein Word Dokument öffnen. Den VBA- Code habe ich hier im Vorum bereits gefunden und funktionieren tut es auch.

Private Sub Label1_Click()
ShellExecute FindWindow("xlMain", vbNullString), "open", "Dateiname.doc", _
vbNullString, "Pfad", vbMaximizedFocus
End Sub

Hier kommt nun mein Problem:
Wenn ich das Word Dokumet auf einen anderen Pfad speicher, also z.B. auf CD brenne oder in einen anderen Ordner verschiebe dann stimmt der Pfad nicht mehr und das dokument kann nicht geöffnet werden.
Meine Frage ist nun, gibt es einen VBA- Code, der automatisch auf den Pfad greift, in dem auch das Excel Dokument liegt. Oder noch besser, auf einen Unterordner in diesem Pfad.
Ich bin für jede hilfe dankbar.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word Dokument aus Excel öffen
04.11.2004 10:34:16
Nepumuk
Hallo Biene,
wenn das Dokument einen eindeutigen Namen hat, könntest du, falls es im Standardordner nicht vorhanden ist, per Makro danach suchen lassen.
Gruß
Nepumuk
AW: Word Dokument aus Excel öffen
Biene
Hi,
das geht aber nur, wenn ich das über ein Makro automatisieren kann.
Das "Programm" an dem ich zur Zeit arbeite soll irgendwann mal von Laien benutzt werden. Das Word Dokument soll ein Lexikon mit Erläuterungen sein.
Aber danke für die Anregung.
AW: Word Dokument aus Excel öffen
04.11.2004 10:54:32
Nepumuk
Hallo Biene,
wenn du ein Programm benötigst, welches alle Laufwerke nach einer bestimmten Datei durchsucht, dann hätte ich einen extrem schnellen für dich.
Gruß
Nepumuk
Anzeige
AW: Word Dokument aus Excel öffen
Sandy
Hi,
das würde mich auch interessieren.
mfg Sandy
AW: Word Dokument aus Excel öffen
Biene
Hi,
und das da wäre? Oder fällt das unter das Betriebsgeheimnis?
AW: Word Dokument aus Excel öffen
04.11.2004 11:00:05
Ralf
Hallo Nepumuk,
das wäre interessant. Nur wenn du das zur Verfügung stellen möchtest. Meine jetzigen Gehversuche in dieser Richtung sind eher bescheiden und laufen recht langsam.
Gruß
Ralf
AW: Word Dokument aus Excel öffen
04.11.2004 11:09:09
Nepumuk
Hallo Ralf,
bitteschön:


Option Explicit
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As LongAs Long
Private Enum FILE_ATTRIBUTE
    MAX_PATH = 260
    INVALID_HANDLE_VALUE = -1
    FILE_ATTRIBUTE_ARCHIVE = &H20
    FILE_ATTRIBUTE_DIRECTORY = &H10
    FILE_ATTRIBUTE_HIDDEN = &H2
    FILE_ATTRIBUTE_NORMAL = &H80
    FILE_ATTRIBUTE_READONLY = &H1
    FILE_ATTRIBUTE_SYSTEM = &H4
    FILE_ATTRIBUTE_TEMPORARY = &H100
End Enum
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
Private strFile As String
Private bolfound As Boolean
Public Sub suchen()
    Dim myFileSystemObject As Object, myDrive As Object
    Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
    For Each myDrive In myFileSystemObject.Drives
        If myDrive.IsReady Then
            FindFiles myDrive.DriveLetter & ":\", "SOLVER.XLA"
            If bolfound Then
                MsgBox "Datei gefunden in " & strFile, 64, "Information"
                Exit For
            End If
        End If
    Next
    Set myFileSystemObject = Nothing
    If Not bolfound Then MsgBox "Datei nicht gefunden", 48, "Hinweis"
End Sub
Private Sub FindFiles(ByVal strFolderPath As StringByVal strSearch As String)
    Dim WFD As WIN32_FIND_DATA
    Dim lngSearch As Long
    Dim strDirName As String
    If Right$(strFolderPath, 1) <> "\" Then strFolderPath = strFolderPath & "\"
    lngSearch = FindFirstFile(strFolderPath & "*.*", WFD)
    If lngSearch <> INVALID_HANDLE_VALUE Then
        GetFilesInFolder strFolderPath, strSearch
        Do
            If bolfound Then Exit Do
            If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Then
                strDirName = TrimNulls(WFD.cFileName)
                If (strDirName <> ".") And (strDirName <> "..") Then FindFiles strFolderPath & strDirName, strSearch
            End If
        Loop While FindNextFile(lngSearch, WFD)
        FindClose lngSearch
    End If
End Sub
Private Sub GetFilesInFolder(ByVal strFolderPath As StringByVal strSearch As String)
    Dim WFD As WIN32_FIND_DATA
    Dim lngSearch As Long
    Dim strFileName As String
    If Right$(strFolderPath, 1) <> "\" Then strFolderPath = strFolderPath & "\"
    lngSearch = FindFirstFile(strFolderPath & strSearch, WFD)
    If lngSearch <> INVALID_HANDLE_VALUE Then
        Do
            If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY Then
                strFileName = TrimNulls(WFD.cFileName)
                bolfound = True
                strFile = strFolderPath & strFileName
                Exit Do
            End If
        Loop While FindNextFile(lngSearch, WFD)
        FindClose lngSearch
    End If
End Sub
Private Function TrimNulls(ByVal strStringIn As StringAs String
    If InStr(strStringIn, Chr(0)) > 0 Then strStringIn = Left$(strStringIn, InStr(strStringIn, Chr(0)) - 1)
    TrimNulls = strStringIn
End Function


Gruß
Nepumuk
Anzeige
AW: Word Dokument aus Excel öffen
04.11.2004 11:13:59
Ralf
Hallo Nepumuk,
ganz herzlichen Dank. Werde mir das gleich mal zu Gemüte führen. :-)
Gruß
Ralf
AW: Word Dokument aus Excel öffen
Biene
Hallo Nepumuk,
der Code ist klasse, vielen Dank. Aber jetzt stehe ich wieder vor meinem alten Problem, wie kann ich die Datei per Makro öffnen? Es wird ja nicht nur der Pfad, sondern auch der Dateiname ausgegeben.
Kannst du mir da auch helfen?
Gruß Biene
AW: Word Dokument aus Excel öffen
04.11.2004 12:34:44
Nepumuk
Hallo Biene,
einfach so:


Option Explicit
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As LongAs Long
Private Enum FILE_ATTRIBUTE
    MAX_PATH = 260
    INVALID_HANDLE_VALUE = -1
    FILE_ATTRIBUTE_ARCHIVE = &H20
    FILE_ATTRIBUTE_DIRECTORY = &H10
    FILE_ATTRIBUTE_HIDDEN = &H2
    FILE_ATTRIBUTE_NORMAL = &H80
    FILE_ATTRIBUTE_READONLY = &H1
    FILE_ATTRIBUTE_SYSTEM = &H4
    FILE_ATTRIBUTE_TEMPORARY = &H100
End Enum
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
Private strFile As String
Private strFolder As String
Private bolfound As Boolean
Public Sub suchen()
    Dim myFileSystemObject As Object, myDrive As Object
    Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
    For Each myDrive In myFileSystemObject.Drives
        If myDrive.IsReady Then
            FindFiles myDrive.DriveLetter & ":\", "SOLVER.XLA"
            If bolfound Then
                MsgBox "Datei " & strFile & " gefunden in " & strFolder, 64, "Information"
                Exit For
            End If
        End If
    Next
    Set myFileSystemObject = Nothing
    If Not bolfound Then MsgBox "Datei nicht gefunden", 48, "Hinweis"
End Sub
Private Sub FindFiles(ByVal strFolderPath As StringByVal strSearch As String)
    Dim WFD As WIN32_FIND_DATA
    Dim lngSearch As Long
    Dim strDirName As String
    If Right$(strFolderPath, 1) <> "\" Then strFolderPath = strFolderPath & "\"
    lngSearch = FindFirstFile(strFolderPath & "*.*", WFD)
    If lngSearch <> INVALID_HANDLE_VALUE Then
        GetFilesInFolder strFolderPath, strSearch
        Do
            If bolfound Then Exit Do
            If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Then
                strDirName = TrimNulls(WFD.cFileName)
                If (strDirName <> ".") And (strDirName <> "..") Then FindFiles strFolderPath & strDirName, strSearch
            End If
        Loop While FindNextFile(lngSearch, WFD)
        FindClose lngSearch
    End If
End Sub
Private Sub GetFilesInFolder(ByVal strFolderPath As StringByVal strSearch As String)
    Dim WFD As WIN32_FIND_DATA
    Dim lngSearch As Long
    Dim strFileName As String
    If Right$(strFolderPath, 1) <> "\" Then strFolderPath = strFolderPath & "\"
    lngSearch = FindFirstFile(strFolderPath & strSearch, WFD)
    If lngSearch <> INVALID_HANDLE_VALUE Then
        Do
            If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY Then
                strFileName = TrimNulls(WFD.cFileName)
                bolfound = True
                strFile = strFileName
                strFolder = strFolderPath
                Exit Do
            End If
        Loop While FindNextFile(lngSearch, WFD)
        FindClose lngSearch
    End If
End Sub
Private Function TrimNulls(ByVal strStringIn As StringAs String
    If InStr(strStringIn, Chr(0)) > 0 Then strStringIn = Left$(strStringIn, InStr(strStringIn, Chr(0)) - 1)
    TrimNulls = strStringIn
End Function


Damit werden Datei-und Pfadname getrennt zurückgegeben. Du kannst im Dateinamen auch Platzhalter wie das Sternchen verwenden und nach Dateien zu suchen, dernen Namen nur ungefähr bekannt sind. Auch die Rückgabe einer Liste möglicher Dateien und Pfade ist zu machen.
Gruß
Nepumuk
Anzeige
AW: Word Dokument aus Excel öffen
Biene
Hallo Nepumuk,
vielen Dank, ich werde es gleich mal ausprobieren.
Gruß Biene
AW: Word Dokument aus Excel öffen
Biene
Hallo zusammen,
ich möchte mich noch mal bei allen, und besonders bei Nepumuk für die Hilfe bedanken. Ich habe jetzt auch das letzte Problem gelöst, aber ohne unterstützung hätte ich das wohl nicht geschafft.
Danke

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige