Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Word Datei aus gleichem ordner öffnen

Word Datei aus gleichem ordner öffnen
16.07.2014 09:50:55
Knoof
Hallo.
In meiner UserForm gibt es einen Button "Druck", wenn ich diesen betätige bekommen ich ein Fenster in dem ich meine Word datei auswählen kann die bearbeitet werden soll.
Allerdings soll die Word datei nicht vom User selbst ausgewählt werden.
Das Programm soll nach betätigen des "Druck" Buttons automatisch die Word Datei namens "Vorlage2.docx" öffnen, anstatt das diese erst manuell gewählt werden muss.
Pfad Angaben sind eher schlecht da dieses Programm von mehreren Usern genutzt werden soll und immer einen anderen Pfad haben kann, Programm und Vorlage liegen jedoch immer im selben Ordner.
Nun weiß ich nicht wie ich meinen vorhandenen Code darauf anpassen kann:
Sub dateiwählen()
Dim ResultFile As String
Dim ErrorDesc As String
Dim WindowName As String
On Error Resume Next
Set wdAnw = GetObject(, "Word.Application") 'Bestehende Word-Instanz suchen
Select Case Err.Number
Case 0 'OK
Case 429 'Es gibt soweit keine Word-Instanz
Err.Clear
Set wdAnw = CreateObject("Word.Application") 'Word-Instanz erzeugen
If Err.Number > 0 Then
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
Case Else 'Unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End Select
On Error GoTo 0
wdAnw.Visible = True 'Instanz sichtbar machen
wdAnw.WindowState = 0
'Je nach dem, ob das Dokument bereits geöffnet ist oder nicht wird verbunden
'bzw. geöffnet. Diese Differenzierung geschieht implizit.
On Error Resume Next
Set wdDok = wdAnw.Documents.Open(Filename:=sbrief)
If Err.Number > 0 Then 'Wenn Arbeitsmappe nicht existiert oder unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
On Error GoTo 0
BadOrHappyEnd Err.Number, Err.Description
'    ElseIf checkspan.Value = False Then
'    wdAnw.ActiveDocument.Bookmarks("Text2").Range.Fields(1).Result.Text = UserForm3.TextBox1.  _
_
Value
'    BadOrHappyEnd Err.Number, Err.Description
'  End If
'Dokument unter neuem Namen speichern - Word 97 doc format
Ersatzwort = Format(txtprakvon & txtname)
'wdAnw.ActiveDocument.SaveAs Filename:=sbrief & Ersatzwort & ".doc", _
'            FileFormat:=wdFormatDocument97
pfad = wdDok.Path
wdAnw.ActiveDocument.SaveAs Filename:=pfad & "/" & monatjahr & "_" & nname & "_" &  _
Ersatzwort & ".doc", _
FileFormat:=wdFormatDocument97
'Serienbrief Vorlage schliessen - ohne zu speichern
wdDok.Close SaveChanges:=wdDoNotSaveChanges
'Word App schliessen
Set wdDok = Nothing
wdAnw.Quit
Set wdAnw = Nothing
Application.ScreenUpdating = True
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word Datei aus gleichem ordner öffnen
16.07.2014 10:15:10
UweD
Hallo
so?
Sub Open_Doc()
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application") 'Word als Object starten
WordApp.Visible = True
WordApp.documents.Open ActiveWorkbook.Path & "\Vorlage2.docx"
End Sub
Gruß UweD

AW: Word Datei aus gleichem ordner öffnen
16.07.2014 10:57:17
Knoof
Hallo,
Danke für die schnelle Antwort.
Sieht schonmal richtig aus... habs versucht in meinen Code einzubauen, aber es will nicht so recht.
trotzdem will er das ich die Vorlage öffne.
Ich bin mir auch nich so recht sicher was ich aus meinem vorherigen Code alles raus nehmen darf und was nicht.
Gruß,
Knoof

Anzeige
AW: Word Datei aus gleichem ordner öffnen
16.07.2014 14:03:17
UweD
Hallo nochmal
So ganz nachvollziehen kann ich den code nicht.
Bei mir funktioniert er mit den eingefügten Änderungen...

Option Explicit
Sub dateiwählen()
Dim ResultFile As String
Dim ErrorDesc As String
Dim WindowName As String
Dim Pfad As String, Datei As String
Dim monatjahr As String
Dim nname As String
Dim Ersatzwort As String
Dim txtprakvon As String, txtname As String
Dim wdAnw As Object, wdDok As Object
Dim wdFormatDocument97, wdDoNotSaveChanges As Boolean  '?
Pfad = ActiveWorkbook.Path & "\"
Datei = "Vorlage2.docx"
monatjahr = Format(Date, "MMYYYY") '?
nname = "Müller" '?
txtprakvon = "KeineAhnung" '?
txtname = "Test" '?
wdDoNotSaveChanges = False
On Error Resume Next
Set wdAnw = GetObject(, "Word.Application") 'Bestehende Word-Instanz suchen
Select Case Err.Number
Case 0 'OK
Case 429 'Es gibt soweit keine Word-Instanz
Err.Clear
Set wdAnw = CreateObject("Word.Application") 'Word-Instanz erzeugen
If Err.Number > 0 Then
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
Case Else 'Unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End Select
On Error GoTo 0
wdAnw.Visible = True 'Instanz sichtbar machen
wdAnw.WindowState = 0
'Je nach dem, ob das Dokument bereits geöffnet ist oder nicht wird verbunden
'bzw. geöffnet. Diese Differenzierung geschieht implizit.
On Error Resume Next
Set wdDok = wdAnw.Documents.Open(Filename:=Pfad & Datei)
If Err.Number > 0 Then 'Wenn Arbeitsmappe nicht existiert oder unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
On Error GoTo 0
BadOrHappyEnd Err.Number, Err.Description
'    ElseIf checkspan.Value = False Then
'    wdAnw.ActiveDocument.Bookmarks("Text2").Range.Fields(1).Result.Text = UserForm3.TextBox1.  _
_
_
Value
'    BadOrHappyEnd Err.Number, Err.Description
'  End If
'Dokument unter neuem Namen speichern - Word 97 doc format
Ersatzwort = Format(txtprakvon & txtname)
'wdAnw.ActiveDocument.SaveAs Filename:=sbrief & Ersatzwort & ".doc", _
'            FileFormat:=wdFormatDocument97
wdAnw.ActiveDocument.SaveAs Filename:=Pfad & monatjahr & "_" & nname & "_" & _
Ersatzwort & ".doc", _
FileFormat:=wdFormatDocument97
'Serienbrief Vorlage schliessen - ohne zu speichern
wdDok.Close SaveChanges:=wdDoNotSaveChanges
'Word App schliessen
Set wdDok = Nothing
wdAnw.Quit
Set wdAnw = Nothing
Application.ScreenUpdating = True
End Sub
Private Sub BadOrHappyEnd(Errnum, ErrDesc)
If Errnum  0 Then MsgBox "Fehler: " & Errnum & vbLf & ErrDesc: Err.Clear
End Sub
Gruß UweD
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Word Datei aus gleichem Ordner automatisch öffnen


Schritt-für-Schritt-Anleitung

Um eine Word-Datei aus dem gleichen Ordner wie Deine Excel-Datei automatisch zu öffnen, kannst Du den folgenden VBA-Code in Deine UserForm integrieren:

Option Explicit
Sub dateiwählen()
    Dim Pfad As String
    Dim Datei As String
    Dim wdAnw As Object
    Dim wdDok As Object

    Pfad = ActiveWorkbook.Path & "\"
    Datei = "Vorlage2.docx"

    On Error Resume Next
    Set wdAnw = GetObject(, "Word.Application") ' Bestehende Word-Instanz suchen
    If Err.Number <> 0 Then
        Set wdAnw = CreateObject("Word.Application") ' Word-Instanz erzeugen
    End If
    On Error GoTo 0

    wdAnw.Visible = True ' Instanz sichtbar machen
    Set wdDok = wdAnw.Documents.Open(Filename:=Pfad & Datei) ' .docx öffnen
End Sub

Dieser Code sucht nach einer bestehenden Word-Instanz oder erstellt eine neue, falls keine vorhanden ist. Anschließend öffnet er die Datei "Vorlage2.docx" automatisch aus dem gleichen Ordner, in dem sich die Excel-Datei befindet.


Häufige Fehler und Lösungen

  • Fehler: Datei nicht gefunden

    • Stelle sicher, dass die Datei tatsächlich im gleichen Ordner wie Deine Excel-Datei gespeichert ist. Überprüfe den Pfad und den Dateinamen.
  • Word-Anwendung öffnet sich nicht

    • Überprüfe, ob Word tatsächlich installiert ist und dass keine anderen Instanzen im Hintergrund laufen.
  • Fehler bei der Ausführung des Codes

    • Achte darauf, dass Du den Code in einem Modul oder in der richtigen UserForm speicherst. Kopiere den gesamten Code und teste ihn in einer neuen Excel-Datei, falls es weiterhin Probleme gibt.

Alternative Methoden

Eine alternative Möglichkeit, um eine Word-Datei zu öffnen, besteht darin, die Shell-Funktion zu verwenden. Dies ist nützlich, wenn Du eine Datei außerhalb der Excel-Umgebung öffnen möchtest. Der folgende Code kann verwendet werden:

Sub OpenWordFile()
    Dim Pfad As String
    Pfad = ActiveWorkbook.Path & "\Vorlage2.docx"
    Shell "cmd /c start """" """ & Pfad & """", vbHide
End Sub

Dieser Ansatz öffnet die Word-Datei in einem neuen Fenster, ohne eine Instanz von Word über VBA zu steuern.


Praktische Beispiele

Wenn Du die oben beschriebene Methode anwendest, kannst Du die Word-Datei auch anpassen, um Inhalte dynamisch einzufügen. Hier ist ein Beispiel, wie Du Text in die geöffnete Word-Datei einfügen kannst:

Sub dateiwählen()
    Dim Pfad As String
    Dim Datei As String
    Dim wdAnw As Object
    Dim wdDok As Object

    Pfad = ActiveWorkbook.Path & "\"
    Datei = "Vorlage2.docx"

    On Error Resume Next
    Set wdAnw = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        Set wdAnw = CreateObject("Word.Application")
    End If
    On Error GoTo 0

    wdAnw.Visible = True
    Set wdDok = wdAnw.Documents.Open(Filename:=Pfad & Datei)

    ' Text in das Dokument einfügen
    wdDok.Content.Text = "Dies ist ein automatischer Text aus Excel."
End Sub

Dieser Code öffnet die Word-Datei und fügt den angegebenen Text automatisch ein.


Tipps für Profis

  • Nutze Option Explicit am Anfang Deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler und Tippfehler zu vermeiden.
  • Verwende die .docx-Formatierung, um die neuesten Funktionen von Word zu nutzen. Das Öffnen von .doc-Dateien kann in manchen Fällen zu Kompatibilitätsproblemen führen.
  • Teste Deinen Code regelmäßig in verschiedenen Excel-Versionen, um sicherzustellen, dass er überall funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich die Word-Datei im schreibgeschützten Modus öffnen?
Du kannst den Code anpassen, indem Du den Parameter ReadOnly auf True setzt:

Set wdDok = wdAnw.Documents.Open(Filename:=Pfad & Datei, ReadOnly:=True)

2. Was ist der Unterschied zwischen .doc und .docx?
Die .docx-Datei ist das neuere Format, das XML-basierte Technologien nutzt, während .doc das ältere binäre Format ist. Das .docx-Format ist in der Regel kompatibler mit neuen Funktionen und bietet bessere Sicherheitsmerkmale.

3. Kann ich auch eine Excel-Datei aus Word öffnen?
Ja, das ist möglich. Du kannst den gleichen Ansatz verwenden, um eine Excel-Datei zu öffnen. Achte darauf, die Dateiendung entsprechend anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige