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

Geschrieben

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?

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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