Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBA - Dokument öffnen, Text kopieren, Dokument schließen und einfügen in Dokument

Empfohlene Antworten

Veröffentlicht

Hallo community, :)

Ich habe ein mehr oder weniger kleines Problem:

Ich habe ein geöffnetes Word 2007 Dokument in dem ich mein Makro starte.

Nun öffnet sich eine User-Form in der eine andere Worddatei ausgewählt werden kann, um deren Inhalte mit in mein Dokument aufzuführen.

Dabei sollen folgende Schritte eingeleitet werden:

Dokument öffnen -> Gesamten Text kopieren -> Dokument schließen -> Text in mein bestehendes Dokument einfügen

Ich kenne mich leider nicht so gut mit VBA aus :(

Bei weiteren fragen meldet euch einfach.

Ich hoffe ihr könnt mir Helfen, freue mich schon über eure Nachrichten und nehme mir jeden Lösungsversuch zu Herzen.

Viele liebe Grüße und ein schönes Wochenende

Julia

Ok hier habe ich einen "Lösungsansatz":

Private Sub ButtonVorwort_öffnen_Click()


[COLOR="Green"]'Dialog zum öffnen einer Worddatei[/COLOR]

With Dialogs(wdDialogFileOpen)

.Name = "*.*"

If .Display Then

PathAndFileName_Vorwort = WordBasic.FileNameInfo(.Name, 1)

End If

End With

If PathAndFileName_Vorwort = "" Then Exit Sub


[COLOR="Green"]' Pfadangabe in Textbox[/COLOR]

Pfad_gewähltes_Vorwort.Text = PathAndFileName_Vorwort


[COLOR="Green"]'Zu Anfang des Dokuments springen[/COLOR]

     If erw = False Then Selection.HomeKey Unit:=wdStory, _

                                    Extend:=wdMove _

      Else Selection.HomeKey Unit:=wdStory, Extend:=wdExtend


[COLOR="Green"]'Cursor platzieren[/COLOR]

Selection.MoveDown Unit:=wdLine, Count:=38



    Documents.Open FileName:=PathAndFileName_Vorwort, _

        ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _

        PasswordDocument:="", PasswordTemplate:="", Revert:=False, _

        WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _

        wdOpenFormatAuto, XMLTransform:=""

    Selection.WholeStory

    Selection.Copy

    Windows("SAP_Workflow_Dokumentation_iXLOG").Activate

    Selection.PasteAndFormat (wdPasteDefault)


[COLOR="Green"]'Hier brauche ich hilfe[/COLOR]

Windows[COLOR="Indigo"][U]("Dokument XY")[/U][/COLOR].Activate

ActiveWindow.Close


End Sub
"Dokument XY" ist nur ein Beispiel: Was muss ich bei der Zeile
Windows("Dokument XY").Activate
an der Stelle
("Dokument XY")

eingeben, damit dies veralgemeinert wird, sprich dass das Dokument angewählt wird, das ich vorher geöffnet haben und nicht "Dokument XY"?

wenn dein dokument das einzige geöffnete ist, ActiveWindow.

wenn du mehrere geöffnet hast, Windows(0).Activate.

diese auflistungen wie öffene word/excel-blätter lassen sich meistens sowohl mit namen (XY) als auch mit index (0) ansprechen.

im zweifelsfalle zieh die doku zu rate oder sieh mit Alt-F2 im methodenfenster von VBA nach.

s'Amstel

Das hab ich jetzt nun auch geklärt..

hier nun der Code:

Private Sub ButtonVorwort_öffnen_Click()


[COLOR="Green"]'Dialog zum öffnen einer Worddatei[/COLOR]

With Dialogs(wdDialogFileOpen)

.Name = "*.*"

If .Display Then

PathAndFileName_DokumentB = WordBasic.FileNameInfo(.Name, 1)

PathAndFileName_DokumentB2 = WordBasic.FileNameInfo(.Name, 2)

End If

End With

If PathAndFileName_DokumentB = "" Then Exit Sub

If PathAndFileName_DokumentB2 = "" Then Exit Sub


[COLOR="Green"]' Pfadangabe in Textbox[/COLOR]

Pfad_gewähltes_Vorwort.Text = PathAndFileName_DokumentB


[COLOR="Green"]'Zu Anfang des Dokuments springen[/COLOR]

     If erw = False Then Selection.HomeKey Unit:=wdStory, _

                                    Extend:=wdMove _

      Else Selection.HomeKey Unit:=wdStory, Extend:=wdExtend

[COLOR="Green"]

'Cursor platzieren[/COLOR]

Selection.MoveDown Unit:=wdLine, Count:=38

[COLOR="Green"]

'Dokument öffnen[/COLOR]

    Documents.Open FileName:=PathAndFileName_DokumentB, _

        ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _

        PasswordDocument:="", PasswordTemplate:="", Revert:=False, _

        WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _

        wdOpenFormatAuto, XMLTransform:=""


[COLOR="Green"]'Kopieren und in Dokument A einfügen[/COLOR]

    Selection.WholeStory

    Selection.Copy

    Windows("Dokument A").Activate

    Selection.PasteAndFormat (wdPasteDefault)


[COLOR="Green"]'Zu Dokument B springen[/COLOR]

       Windows(PathAndFileName_DokumentB2).Activate

[COLOR="Indigo"]   ActiveWindow.Close[/COLOR]


End Sub
Leider doch noch ein kleines Problem: Er führt den Befehl
ActiveWindow.Close

nicht aus.

Ist da was falsch?

Währenddem ich geschriben habe kam dein Eintrag Amstelchen, Tschuldigung.

schon ok :)

Ist da was falsch?

liste doch mal bitte in einer kleinen sub die windows() auf.

sprich, ein for ... next von 0 bis windows.count.

dann solltest du die tatsächlichen dokumentnamen herausbekommen.

ActiveWindow.Close

ach ja, das .Close sollte einen parameter akzeptieren, der angibt, ob das dokument gespeichert werden soll oder nicht, d.h. verworfen.

s'Amstel

ich glaube mein fehler ist, dass er mir nicht wirklich in mein dokument b zurückspringt.

denn die fehlermeldung die auftaucht besagt, dass word nicht geschlossen werden kann, weil ein dialogfeld (meine user-form) geöffnet ist??

denn die fehlermeldung die auftaucht besagt, dass word nicht geschlossen werden kann, weil ein dialogfeld (meine user-form) geöffnet ist??

das hatte ich leider noch nicht. mach aber die userform einfach mal zu - sollte mit Unload NameDesUserForm machbar sein.

s'Amstel

Danke erstmal für deine viele Hilfe :)

Allerdings muss die UserForm offen bleiben, da das nicht die einzige tätigkeit ist.

Gibt es da vielleicht eine andere Lösung?

bau die userform in einem "allgemeinen" dokument ein - also einem anderen als dem, das in deinem ablauf geöffnet oder geschlossen werden muss - ich nenn solche dinger meistens "steuerzentrale". :)

s'Amstel

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.