clusters Geschrieben 30. Januar 2009 Geschrieben 30. Januar 2009 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 Zitieren
clusters Geschrieben 30. Januar 2009 Autor Geschrieben 30. Januar 2009 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"? Zitieren
Amstelchen Geschrieben 30. Januar 2009 Geschrieben 30. Januar 2009 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 Zitieren
clusters Geschrieben 30. Januar 2009 Autor Geschrieben 30. Januar 2009 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? Zitieren
clusters Geschrieben 30. Januar 2009 Autor Geschrieben 30. Januar 2009 Währenddem ich geschriben habe kam dein Eintrag Amstelchen, Tschuldigung. Zitieren
Amstelchen Geschrieben 30. Januar 2009 Geschrieben 30. Januar 2009 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 Zitieren
clusters Geschrieben 30. Januar 2009 Autor Geschrieben 30. Januar 2009 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?? Zitieren
Amstelchen Geschrieben 30. Januar 2009 Geschrieben 30. Januar 2009 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 Zitieren
clusters Geschrieben 30. Januar 2009 Autor Geschrieben 30. Januar 2009 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? Zitieren
Amstelchen Geschrieben 30. Januar 2009 Geschrieben 30. Januar 2009 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 Zitieren
Empfohlene Beiträge
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.