VBA - Word-Dokument 2mal öffnen

  • Word

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von blubberaccount.

    VBA - Word-Dokument 2mal öffnen

    Hallo miteinander

    Ich habe ein Button in einer Form bei Word.
    Wenn ich diesen anklicke soll er das aktuelle Dokument im Hintergrund nochmal öffnen.

    Funktioniert leider nicht.

    Habe dazu bereits dies geschrieben:

    Visual Basic-Quellcode

    1. Private Sub neukunde()
    2. Documents.Open FileName:="C:\Users\admin\Desktop\neukunde.docx"
    3. end sub


    weiss jemand wie das geht?

    Besten Dank für eure Hilfe!

    newsletter
    Hallo,

    Folgendes könnte klappen:

    Visual Basic-Quellcode

    1. If InStr(1, ActiveDocument.FullName, ":", vbTextCompare) > 0 Then 'Datei schonmal gespeichert? Alternativ: if activedocument.saved then
    2. Application.Documents.Add ActiveDocument.FullName
    3. End If
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hallo Peterfido

    Vielen Dank für deine Antwort.

    Habe es aus Zeitgründen erst jetzt testen können.

    Mein Dokument öffnet zu Beginn eine Form. In dieser Form werden Textboxen gefüllt und ins Word nach Button-Klick übertragen.
    Dies funktioniert perfekt.
    Wenn ich nun auf den Button klicke soll zusätzlich im Hintergrund das gleiche Dokument (unausgefüllt) mit der Form starten, damit dort ein weiteres Dokument gefüllt werden kann.

    Durch dein Script werden die Form-Angaben ins Word übertragen und das gleiche nochmal geöffnet...

    Hoffe du kannst mir helfen..

    Besten Dank schonmal !
    Hallo,

    ja, dann zuerst öffnen und dann füllen.

    Für bessere Antworten brauche ich schon den gesamten relevanten Lauffähigen Code, wo der Fehler auftaucht. Idealerweise im Worddokument mit Formular und allem PiPaPo. Nachbauen ist mir immer bissel lästig und kann durch eine andere Vorgehensweise zu einem anderen Ergebnis führen.
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    peterfido schrieb:

    Hallo,

    ja, dann zuerst öffnen und dann füllen.

    Für bessere Antworten brauche ich schon den gesamten relevanten Lauffähigen Code, wo der Fehler auftaucht. Idealerweise im Worddokument mit Formular und allem PiPaPo. Nachbauen ist mir immer bissel lästig und kann durch eine andere Vorgehensweise zu einem anderen Ergebnis führen.


    In dem Dokument:

    Visual Basic-Quellcode

    1. Private Sub Document_Open()
    2. frmFormular.Show
    3. End Sub


    In der Form "frmFormular":

    Visual Basic-Quellcode

    1. Private Sub cmdUebertragen_Click()
    2. Dim Vorname As Range 'Namen übertragen ins Dokument zur Textmarke
    3. Set Vorname = ActiveDocument.Bookmarks("Vorname").Range
    4. Vorname.Text = Me.txtVorname.Value
    5. If MsgBox("Soll das Dokument gedruckt werden?", vbYesNo + vbQuestion, "Drucken?") = vbYes Then
    6. ActiveDocument.ActiveWindow.PrintOut _
    7. Range:=wdPrintFromTo, From:="1", To:="2" 'Ausgefülltes Dokument drucken
    8. Unload Me
    9. End If
    10. If MsgBox("Dokument im Hintergrund nochmal öffnen?", vbYesNo + vbQuestion, "Neustart") = vbYes Then
    11. If InStr(1, ActiveDocument.FullName, ":", vbTextCompare) > 0 Then
    12. Application.Documents.Add ActiveDocument.FullName
    13. End If
    14. Else
    15. MsgBox ("Dokument wird nicht gedruckt")
    16. Unload Me
    17. End If
    18. End Sub


    So sieht die Form aus:



    Wenn ich nun auf "Übertragen" klicke kommen 2 Abfragen:

    1. Dokument drucken? {JA= Drucken} {Nein= Weiter im Code vorgehen}

    2. Dokument nochmal öffnen im Hintergrund {JA= Dokument im Hintergrund nochmal öffnen mit "Standpunkt 0, ohne generierten >vornamen<-Text mit der öffnenden Form "frmFormular} {Nein = Abbrechen}
    Also sozusagen das Dokument wie ohne etwas je gemacht zu haben nochmal öffnen...
    (Alles auf keinen Fall mit Speichern(!)


    Hoffe du kannst mir hier weiterhelfen :)

    (Gibt es evtl. eine möglichkeit die Speicherabfrage beim schliessen zu ignorieren? Das Dokument wird rund 10-30x pro Tag gefüllt und ggf. Ausgedruckt und darf keinesfalls gespeichert werden )

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „blubberaccount“ ()

    Hallo!

    Mach aus dem Originaldokument eine Vorlage (dotm), dann sollte es funktionieren. Das Formular auslagern in ein Word-Add-In (ebenfalls dotm, abzulegen im STARTUP-Ordner). Das wäre m.E. die bessere/richtige Vorgehensweise.

    Gruß, René

    mumpel schrieb:

    Hallo!

    Mach aus dem Originaldokument eine Vorlage (dotm), dann sollte es funktionieren. Das Formular auslagern in ein Word-Add-In (ebenfalls dotm, abzulegen im STARTUP-Ordner). Das wäre m.E. die bessere/richtige Vorgehensweise.

    Gruß, René


    Ich weiss nicht genau wie ich sowas machen kann (add-in etc...) hast du evtl. Ein Beispiel?

    Auch auslagern ist nicht wirklich einfach, programm & form ist mittlerweile riesig.

    Besten Dank für deine Unterstützung
    Hast Du sauber referenziert (ActiveDocument anstatt ThisDocument)? Hast Du Code und Datei sauber getrennt (auszufüllende Datei und Datei mit dem Code müssen getrennt sein)? Befindet sich die Datei mit dem Code im STARTUP-Ordner?
    Also:

    Zuerst zum Code:
    1. Neues Dokument [Wintaste + R] --> "winword"
    2. Entwickleroptionen --> Visual Basic --> Einfügen --> New Userform
    3. 1Button + Textfeld erstellen
    4. Code:

    Visual Basic-Quellcode

    1. Private Sub cmdStart_Click()
    2. Dim Vorname As Range 'Namen übertragen ins Dokument zur Textmarke
    3. Set Vorname = ActiveDocument.Bookmarks("Vorname").Range
    4. Vorname.Text = Me.txtVorname.Value
    5. If InStr(1, ActiveDocument.FullName, ":", vbTextCompare) > 0 Then
    6. Application.Documents.Add ActiveDocument.FullName
    7. End If
    8. End Sub

    5. Textmarke im geöffneten Dokument einfügen "Vorname"
    6.
    In den Entwickleroptionen speichern unter:
    "autostart.dotm"
    7.
    Das Dokument selber mit der Textmarke speichern unter:
    Dokument.dotm"

    Nun die autostart.dotm in dieses Verzeichnis kopieren..:
    C:\Users\admin\AppData\Roaming\Microsoft\Word\STARTUP

    ist diese Vorgehensweise richtig?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „blubberaccount“ ()