Veröffentlicht 30. Januar 200916 j 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
30. Januar 200916 j 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"?
30. Januar 200916 j 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
30. Januar 200916 j 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?
30. Januar 200916 j 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
30. Januar 200916 j 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??
30. Januar 200916 j 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
30. Januar 200916 j 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?
30. Januar 200916 j 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.