Zum Inhalt springen

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


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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"?

Geschrieben

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

Geschrieben

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?

Geschrieben

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

Geschrieben

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??

Geschrieben
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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...