Nimm dir
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Option Explicit
Public Sub AlterBookmark( ByVal Name As String , ByVal Expression As Variant , Optional ByVal Document As Word.Document)
If Document Is Nothing Then Set Document = ActiveDocument
If Not Document.Bookmarks.Exists(Name) Then
Err.Raise 5&, "AlterBookmark"
Else
Dim rng As Word.Range
Set rng = Document.Bookmarks(Name).Range
If TypeOf Expression Is Excel.Range Then
Call Expression.Copy
Call rng.PasteExcelTable( False , False , False )
Application.CutCopyMode = False
Else
rng.Text = CStr (Expression)
End If
Call Document.Bookmarks.Add(Name, rng)
End If
End Sub
|
und pack diese in ein eigenes Modul - nenn das Modul z.B. modWdBookmarks.
A c h t u n g: Das ist eine modifizierte Version; warum, kommt weiter unten.
Wenn ich das richtig interpretiere, liegen deine Daten in deinem Code in der Zeile 46-48 vor.
Das ist der Teil hier:
1 2 3 | With Sheets( "word-kopierer" ).Range( "A:A" )
.Offset(0, 0).SpecialCells(xlCellTypeVisible).Copy
End With
|
Anstatt mit Copy, schreib dies:
1 2 3 | With Sheets( "word-kopierer" ).Range( "A:A" )
Set rngData = .SpecialCells(xlCellTypeVisible)
End With
|
Das Offset(0, 0) kann man weglassen, da der Bereich mit den Argumenten 0 und 0 nicht versetzt wird.
Jetzt ruf das obige Makro auf, es fügt gegenüber der ersten Version keinen text ein, sondern den Datenbreich von Excel... als Tabelle in Word:
1 | AlterBookmark "BookmarkName" , rngData, AppWord
|
Falls du dich übrigens wunderst, wie ich die Datentypen von Word in Excel verwende:

Kleiner Hinweis noch:
1 | Dim strHaupt, Dpkt, Tabmin, Tabmax, strVer As String
|
Macht nicht was du vermuten wirst. Bis auf strVer haben alle anderen Variablen nämlich den Datentyp Variant und nicht String.
|