Hallo zusammen,
ich kopiere mittels VBA aus einem Excel-Dokument Werte zu Textmarken in einem Word-Dokument. Das klappt soweit mit einzelnen Zellen auch problemlos. Nun habe ich im Excel-Dokument aber keinen einzelnen Wert, sondern eine Tabelle und würde dort gerne eine komplette Spalte kopieren und nicht jede Zelle einzeln ansprechen. Diesen Bereich würde ich auch gerne komplett in eine Tabelle im Word-Dokument einfügen. Ich verwende geschlossene Textmarken und diese sollen nach dem Kopiervorgang auch erhalten werden. Folgender Code funktioniert soweit super. Es werden einzelne Zellen kopiert und die Textmarken nach dem Kopiervorgang wieder eingefügt:
Sub Aufruf_ReplaceBookmarkText()
strPathAndFile = "PFAD“
Set xlAppl = CreateObject("Excel.Application")
Set xlWbk = xlAppl.Workbooks.Open(FileName:=strPathAndFile)
Set xlWksTest = xlWbk.Worksheets("Test")
fkt_ReplaceBookmarkText ActiveDocument, "EZE1", xlWksTest.Range("B5")
end sub
Function fkt_ReplaceBookmarkText(oDoc As Document, strBMName As String, strBMText As String)
Dim rng As Range
If oDoc.Bookmarks.Exists(strBMName) Then
Set rng = oDoc.Bookmarks(strBMName).Range
rng.Text = strBMText
oDoc.Bookmarks.Add strBMName, rng
Set rng = Nothing
End If
End Function
Meine Idee war es nun, dass ich den Bereich im Word-Dokument mit Hilfe zweier Textmarken bestimme und dort die Spalte aus Excel einfüge. Die erste Textmarke ist die oberste Zelle der Spalte und die zweite Textmarke ist die unterste Zelle der gleichen Spalte.
fkt_ReplaceBookmarkTextRange ActiveDocument, "SpalteOben", "SpalteUnten"
Function fkt_ReplaceBookmarkTextRange(oDoc As Document, strBMName1 As String, strBMName2 As _
String)
Dim rng1 As Range, rng2 As Range
Dim xlAppl As Object 'Excel.Application
Dim xlWbk As Object 'Excel.Workbook
Dim xlWks As Object 'Excel.Worksheet
'Pfad anpassen
strPathAndFile = "PFAD“
Set xlAppl = CreateObject("Excel.Application")
Set xlWbk = xlAppl.Workbooks.Open(FileName:=strPathAndFile)
xlAppl.Visible = False
Set xlWksTest = xlWbk.Worksheets("Test")
If oDoc.Bookmarks.Exists(strBMName1) Then
Set rng1 = oDoc.Bookmarks(strBMName1).Range
Set rng2 = oDoc.Bookmarks(strBMName2).Range
xlWksTest.Range("B175:B191").Copy 'Kopiervorgang der Spalte aus Excel
oDoc.Range(rng1.Start, rng2.End).Paste 'Einfügen in den Bereich im Word-Dokument
oDoc.Bookmarks.Add Name:=strBMName2, Range:=rng2
Set rng1 = Nothing
Set rng2 = Nothing
End If
End Function
Mit dieser Funktion wird der gewünschte Bereich kopiert und eingefügt, aber die Textmarke „SpalteUnten“ befindet sich nicht mehr an der gleichen Position, sondern im Word-Dokument in einer anderen Zelle.
Bin für jeden Vorschlag dankbar und mir irgendwie auch sicher, dass es bestimmt eine elegantere Lösung für mein Problem gibt.
|