Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text in Variable kopieren

Text in Variable kopieren
Marlon
Hallo,
Ich will Text aus Excel nach word kopieren.
Die Verbindung von Word und Excel über die Library funktioniert.
Also z.B.
Dim Text as string
Text=Range("A1") & ", " & Range("A2")
Und jetzt muß ich irgenwie selektieren, damit ich das Selektierte pasten kann. Aber das funktioniert nicht.
Die Methode Range für das Objekt global ist fehlgeschlagen.
Kann ich die Variable nicht so einfach in Range() setzen?
Range(Text).Select
Word_App.Selection.PasteSpecial Link:=False, DataType:=wdPasteRTF, _
Placement:=wdInLine, DisplayAsIcon:=False
Word_App.Selection.TypeParagraph
Was mache ich falsch?
Danke,
marlon
AW: Text in Variable kopieren
16.09.2011 22:28:35
fcs
Hallo Marlon,
mit der richtigen Wordfunktion kannst du den Inhalter Variablen direkt in Word einfügen.
Text bitte nicht als Variablen-name verwenden, da "Text" auch ein Schlüsselwort in Excel und Word ist.
Da es in Word auch Range-Objekte gibt hab ich den Verweis auf das Excel-Tabellenblatt vervollständigt.
Gruß
Franz

Sub TextnachWord()
Dim sText As String
Dim Word_App As Word.Application
With ActiveSheet
sText = .Range("A1") & ", " & .Range("A2")
End With
'Im aktiven Worddokument an der Cursor-Position den Text und eine Zeilenschaltung einfügen
Set Word_App = Word.Application
With Word_App.Application
With .Selection
.InsertBefore Text:=sText
.Collapse Direction:=wdCollapseEnd
End With
.Selection.TypeParagraph
End With
End Sub

Anzeige
AW: Text in Variable kopieren
16.09.2011 23:44:40
Marlon
Hallo Franz,
ja, das hat mir sehr weitergeholfen.
Gibt es einen Grund warum Du zum Einfügen statt ".TypeText Text:="
das ".InsertBefore Text:" verwendest?
Gruß und Dank,
Marlon
AW: Text in Variable kopieren
17.09.2011 01:24:52
fcs
Hallo Marlon,
Gibt es einen Grund warum Du zum Einfügen statt ".TypeText Text:="
das ".InsertBefore Text:" verwendest?

Nein. Ich hatte jetzt auch nicht nach danach gesucht. ".TypeText" erfordert aber zwingend, dass das richtige Fenster in Word aktiv ist und der Cursor an der richtigen Position.
Ich arbeite aber meistens mit irgendwelchen Objekten in Worddokumenten, da sind andere Einfüge-Funktionen besser geeignet.
Gruß
Franz
Anzeige
AW: Text in Variable kopieren
17.09.2011 16:20:29
Marlon
Hallo Franz,
vielen Dank. Bin inzwischen super weitergekommen mit allem. Eigentlich fast perfekt.
Eine Kleinigkeit habe ich nicht hingekriegt. Vielleicht fällt Dir dazu spontan noch was ein:
Ich kopiere also den Text aus den Zellen nach Word rüber. Nach bestimmten Zellen in Excel/Absätzen in Word würde ich in Word
gerne einen Strich als Trenner setzen. Aber das krieg ich trotz Makrorecorder in Word nicht hin.
Ich versuche immer sowas:
' If Cells(i, 2) Cells(i - 1, 2) Then
' Selection.MoveUp Unit:=wdLine, Count:=1
' Selection.MoveDown Unit:=wdLine, Count:=1
' With Selection.Borders(wdBorderTop)
' .LineStyle = Options.DefaultBorderLineStyle
' .LineWidth = Options.DefaultBorderLineWidth
' .Color = Options.DefaultBorderColor
' End With
' End If
Aber das klappt nicht, weil er wohl irgendwie mit dem Selection-Ding nicht klarkommt.
Wenn du ohne große Mühe dazu noch einen Tipp hättest, würde ich mich freuen. Macht
aber nichts, wenn nicht. Bin sehr zufrieden.
Liebe Grüsse,
Marlon
Anzeige
AW: Text in Variable kopieren
18.09.2011 02:02:42
fcs
Hallo Marlon,
so sollte es funktionieren.
Wichtig ist, dass bei Selection hier auch immer bezug auf die Wordanwendung genommen wird.
Um Verwirrung/Verwechslung zu vermeiden hier immer die Objekte komplett referenzieren, insbesondere da hier in zwei MS Office-Anwendungen gearbeitte wird.
Gruß
Franz

Sub TextnachWord()
Dim sText As String, wks As Worksheet
Dim Word_App As Word.Application
Dim i As Long
Set wks = ActiveSheet
With wks
sText = .Range("A1") & ", " & .Range("A2")
End With
'Im activen Worddokument an der Cursor-Position den Text und eine Zeilenschaltung einfügen
Set Word_App = Word.Application
With Word_App.Application
With .Selection
.TypeText Text:=sText
End With
.Selection.TypeParagraph
'Zelleninhalte aus Excel eintragen, Absätze mit Rahmen unten, wenn in der nächsten _
Zeile in Spalte B (2) sich der Wert ändert.
For i = 4 To wks.Cells(wks.Rows.Count, 2).End(xlUp).Row
With .Selection
sText = wks.Cells(i, 2).Text & VBA.vbTab & wks.Cells(i, 3).Text
.TypeText Text:=sText
End With
.Selection.TypeParagraph
'Prüfen, ob in nächster Zeile sich der Wert in Spalte 2 ändert
If wks.Cells(i, 2)  wks.Cells(i + 1, 2) Then
.Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
With .Selection.ParagraphFormat
With .Borders(wdBorderBottom)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth050pt
.Color = wdColorAutomatic
End With
With .Borders
.DistanceFromBottom = 2
.Shadow = False
End With
End With
.Selection.MoveDown Unit:=wdLine, Count:=1
End If
Next
End With
End Sub

Anzeige
noch ein wenig gekürzt
18.09.2011 08:09:02
Erich
Hi,
in Franz' Code wird With noch nicht konseqent genutzt, was aber IMHO der Klarheit dienlich wäre.
Hier mein Viorschlag:

Sub TextnachWord()
Dim wks As Worksheet
Dim Word_App As Word.Application
Dim i As Long
Set wks = ActiveSheet
Set Word_App = Word.Application
'Im activen Worddokument an der Cursor-Position den Text
'und eine Zeilenschaltung einfügen
With Word_App.Application
With .Selection
.TypeText Text:=wks.Range("A1") & ", " & wks.Range("A2")
.TypeParagraph
End With
'Zelleninhalte aus Excel eintragen, Absätze mit Rahmen unten,
'wenn in der nächsten Zeile in Spalte B (2) sich der Wert ändert.
For i = 4 To wks.Cells(wks.Rows.Count, 2).End(xlUp).Row
With .Selection
.TypeText Text:=wks.Cells(i, 2).Text & vbTab & wks.Cells(i, 3).Text
.TypeParagraph
End With
'Prüfen, ob in nächster Zeile sich der Wert in Spalte 2 ändert
If wks.Cells(i, 2)  wks.Cells(i + 1, 2) Then
.Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
With .Selection.ParagraphFormat
With .Borders(wdBorderBottom)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth050pt
.Color = wdColorAutomatic
End With
With .Borders
.DistanceFromBottom = 2
.Shadow = False
End With
End With
.Selection.MoveDown Unit:=wdLine, Count:=1
End If
Next i
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: noch ein wenig gekürzt
18.09.2011 12:06:27
fcs
Hallo Erich,
das ".Selection.TypeParagraph" kann man in diesem Fall in der Tat ohne ".Selection" in das vorherige With reinnehmen.
Ob man die zu übertragenden Inhalte vorher in einer Variablen (bei mir "sText") zusammenfast oder nicht, das ist Geschmackssache. Ich bevorzuge diese Methode, weil man so leichter Inhalte testen kann und die Methoden, in denen man die Werte einsetzt, bleiben übersichtlicher, insbesondere dann wenn mehrere Parameter übergeben werden müssen.
Gruß
Franz
Da sind wir ganz einig - schönen Sonntag! (owT)
18.09.2011 12:21:25
Erich
AW: Da sind wir ganz einig - schönen Sonntag! (owT)
18.09.2011 19:31:36
Marlon
Super! läuft alles perfekt. Vielen, vielen Dank. Bin happy.
Marlon

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige