VBA/Word2010 Dateinamen merken, in neue Datei und zurück

Hallo,
jetzt fehlt mir für mein Programm nur noch ein VBA-Code für folgenden Ablauf:

Dokumente A und B sind geöffnet. Merk den Dateinamen von A und geh zu B. Kopiere etwas in B, geh zurück zu A und füge dort die kopierten Zeichen ein.
Für Euch sicher kein Problem, also bitte helft mir.
LG Wilhelm

Hallo Wilhelm,

Dokumente A und B sind geöffnet. Merk den Dateinamen von A
und geh zu B.

kein Akt.

Kopiere etwas in B,

? „etwas“ ist eweng zu wenig Info. Was soll kopiert werden, wie
kann Vba es erkennen usw.?

geh zurück zu A

Kein Akt.

und füge dort die kopierten Zeichen ein.

Wo dort?

Gruß
Reinhard

Hallo Reinhard,
in B sind zu dem Zeitpunkt, in dem sich der Dateiname B gemerkt werden soll, von mir bearbeitete Zeichenfolgen aus B mit STRG+C zwischengespeichert. Diese Zeichenfolge wird nach Rückkehr zu A in A wahrscheinlich in Zeile X oder bei der Textmarke Y mit STRG+V eingelesen. Hilfe benötige ich nur bei der Speicherung der beiden Dateinamen und dem hin- und herspringen von einer Datei zur anderen.
LG Wilhelm

Hallo W,

ich will den Post nicht hijacken. Reinhards Fragen sind voll berechtigt, denn er ist hier der Fachmann. Die direkte Antwort auf Deine Fragen lautet:

Dim aDoc as Word.Document
Dim bDoc as Word.Document
...
aDoc.Activate
...
bDoc.Activate

Allerdings ist dieser Ansatz ein NoNo. Er funktioniert, macht den Code aber unnötig langsam, weil man direkt auf den Range zugreifen kann, vor/nach dem eingefügt wird:
a.Doc.Range(Start,End).InsertAfter ||.InsertBefore
oder - noch professioneller - Textmarken nutzt, um die Ranges vorher zu bestimmen:
a.Doc.Bookmarks(TMName).Range.InsertBefore ||.InsertAfter ||.Text = „…“
Das Activate macht den Code langsam. Und noch langsamer wird er mit Selection (oder nicht, R.?).
Daher verstehe bitte, daß ich nur geantwortet habe, weil Du anscheinend unter Zeitdruck stehst.

HTH.

Markus
------------------------
Und Sterne sammel’ ich (auch wenn’s unmodern geworden zu sein scheint) noch immer.

Hallo Wilhelm,

in B sind zu dem Zeitpunkt, in dem sich der Dateiname B
gemerkt werden soll, von mir bearbeitete Zeichenfolgen aus B
mit STRG+C zwischengespeichert.

warum soll der Dateiname von B gemerkt werden? Das geht aus
deinem Beitrag nicht hervor.

Wenn du in B stehend Strg+c drückst so speicherst du den gerade
markierten Text in die Zwischenablage.

Wenn du schon Strg+c gemacht hast für was brauchst du den Namen
von B noch?
Du willst doch nach A? Das Makro kennt den Namen von A nicht
außer er steht im Code oder du bist per makro von A nach B gegangen,
dann hätteste aber den Namen von B wissen müssen.
Und während das Makro läuft geht nix mit Strg+c.

Irgendwas beißt sich in deinem Plan gewaltig *find*
Okay, ich kann mir Code vorstellen wo du Dinge machen kannst die ich
grad geleugnet habe aber ob das notwendig ist weiß noch nicht.

Nachfolgend ein Codeansatz.

Gruß
Reinhard

Code gehört in ein Standardmodul von Normal.dotm.
In den Code gehört der Name von B.
In B wird eine Textmarke „tmWichtig“ erwartet die für den
herauszukopierenden Text steht.
Diese Textmarke wird kopiert und in A eingefügt.
Mit klleiner Codeänderung kann der Code dann auch an einer
Textmarke in A einfügen.

Option Explicit

Sub Test()
Dim docB
Set docB = Documents("B")
Application.ScreenUpdating = False
With ActiveDocument
 docB.Activate
 Selection.GoTo What:=wdGoToBookmark, Name:="tmWichtig"
 Selection.Copy
 .Activate
 Selection.Paste
End With
Application.ScreenUpdating = True
End Sub

Hallo Markus,

Das Activate macht den Code langsam. Und noch langsamer wird
er mit Selection (oder nicht, R.?).

ja, da hast du Recht. Jedes Wechseln kostet Zeit.
Mag bei ein zwei Wechseln nicht merkbar sein aber es ist nicht
unüblich daß während des Codeablaufs mehr als 50, 100 mal
gewechselt wird.

Deshalb versucht man routinemäßig activate und select zu vermeiden.
In Excel-Vba kann ich aus Erfahrungswerten bestärigen daß die
Aussage stimmt, daß Select zu 99% unnötig ist.
Und Activate ist in Excel nur in wenigen Fällen unbedingt nötig.

In Word gehe ich von ähnlicher Sachlage aus, aber kann das
(noch) nicht bestätigen. Denn ich finde zuoft im Internet Codes
die kein Laie geschrieben hat aber trotzdem viele Selects,
genauer „Selection“ enthalten.

Noch ein Punkt für deine Aufzählung, Activate und Select machen
Codes schwer lesbar. Viel besser ist klare Referenzierung.
Hier ein beispiel:

Dim docB As Document
Set docB = Documents("B")
With ActiveDocument
 docB.Bookmarks("tmB").Range.Copy
 .Bookmarks("tmA").Range.Paste
End With

Daher verstehe bitte, daß ich nur geantwortet habe, weil Du
anscheinend unter Zeitdruck stehst.

Ja, mit dem Zeitdruck habe ich auch gelesen.
Ich kann dazu leider nur sagen, von meiner Seite aus habe ich alles
getan, gesagt, gefragt…

Gruß
Reinhard