Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1768to1772
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

Excel zu Word Tabellenlayout

Excel zu Word Tabellenlayout
03.07.2020 15:14:46
Christian
Hallo Zusammen,
ich habe, dem Rat folgend, zwei Dateien zu meiner folgenden Frage hochgeladen.
1. https://www.herber.de/bbs/user/138758.xlsm
2. https://www.herber.de/bbs/user/138759.doc
Meine Frage bzw. die Lösung welche ich suche ist, wie kann ich aus Excel heraus nach dem Einfügen einer/der Tabelle in Word in dieser Tabelle Zellen aus einer Reihe zu einer Zelle verbinden?
Um im Beispiel zu bleiben geht es dort um die letzte Zeile und dort die Zellen der Spalten 1 bis 4, sodass der Text aus der ersten Zelle dann anschließend in der dann verbundenen Zelle ausgerichtet werden kann.
Private Sub SheetsToWord1()
Dim wordObj As Word.Application
Dim wordDoc As Word.Document
Dim wordTab As Word.Table
Dim wordRow As Word.Row
Dim wordCel As Word.Cell
Dim Sheet1 As Word.Range
Dim rngSheet1 As Range
Dim wordCell As Range
Dim lngRow As Long
Dim lngRowMax As Long
Dim lngCol As Long
Dim lngColMax As Long
Dim intZ As Integer
On Error GoTo SheetPositionWord_Error
If WordOpen = False Then
Set wordObj = CreateObject("word.application")
Else
Set wordObj = GetObject("", "word.application")
End If
wordObj.Visible = True
With Tabelle1
Set rngSheet1 = .Range("A1:F7")
lngRowMax = rngSheet1.Rows.Count
lngColMax = rngSheet1.Columns.Count
End With
Set wordDoc = wordObj.Documents.Open(ThisWorkbook.Path & "\TemplateWordDoc.doc")
Set Sheet1 = wordDoc.Bookmarks("SummaryTable").Range
Set wordTab = wordDoc.Tables.Add(Sheet1, lngRowMax, lngColMax)
With wordTab
For lngRow = 1 To 1
For lngCol = 1 To lngColMax
.Cell(lngRow, lngCol).Range.InsertAfter (rngSheet1.Cells(lngRow, lngCol))
.Cell(lngRow, lngCol).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next lngCol
Next lngRow
For lngRow = 2 To lngRowMax - 1
For lngCol = 1 To 1
.Cell(lngRow, lngCol).Range.InsertAfter (Format(rngSheet1.Cells(lngRow, lngCol), "#"))
.Cell(lngRow, lngCol).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next lngCol<b
Next lngRow
For lngRow = 2 To lngRowMax - 1
For lngCol = 2 To 4
.Cell(lngRow, lngCol).Range.InsertAfter (Format(rngSheet1.Cells(lngRow, lngCol), "#,###"))
.Cell(lngRow, lngCol).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
Next lngCol
Next lngRow
For lngRow = 2 To lngRowMax - 1
For lngCol = 5 To 5
.Cell(lngRow, lngCol).Range.InsertAfter (Format(rngSheet1.Cells(lngRow, lngCol), "#"))
.Cell(lngRow, lngCol).Range.ParagraphFormat.Alignment = wdAlignParagraphLeft
Next lngCol
Next lngRow
For lngRow = 2 To lngRowMax
For lngCol = lngColMax To lngColMax
.Cell(lngRow, lngCol).Range.InsertAfter (Format(rngSheet1.Cells(lngRow, lngCol), "#,###.00 €"))
.Cell(lngRow, lngCol).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
Next lngCol
Next lngRow
For lngRow = lngRowMax To lngRowMax
For lngCol = 1 To lngColMax - 1
.Cell(lngRow, lngCol).Range.InsertAfter (rngSheet1.Cells(lngRow, lngCol))
.Cell(lngRow, lngCol).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
Next lngCol
Next lngRow
'For lngRow = lngRowMax To lngRowMax
' For lngCol = 1 To lngColMax - 1
' .Cell(lngRowMax, lngCol).Select
' if selection.information'.Merge
' Next lngCol
'Next lngRow
'If lngRow = lngRowMax Then
' For lngCol = 1 To lngColMax - 1
' Range(Cells(lngRow, 1), Cells(lngRow, lngColMax - 1)).Select.MergeCells = True
' .Range.MergeCells = True
' Next lngCol
'End If
.Columns.AutoFit
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
.Style = "TableLayout"
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
End With
Ich habe mit diversen "Konstruktionen" von Merge experimentiert, aber immer blieb ich auf dem Punkt, das ich offensichtlich nicht den richtigen Code für diese Aktion im Word hatte. Deshalb auch die zwei "Versuche", welche auskommentiert sind.
Ich hoffe nun, das mir jemand den entscheidenden Hinweis geben kann.
Vielen Dank schon einmal im Voraus.
Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das geht so der...
03.07.2020 17:41:10
Case
Hallo, :-)
... Spur nach: ;-)
    '.........
.ApplyStyleLastRow = True
.Cell(lngRow, 1).Merge MergeTo:=.Cell(lngRow, 4)
End With
Servus
Case

AW: Excel zu Word Tabellenlayout
04.07.2020 07:52:51
Christian
Hallo Case,
vielen Dank für diese "Brotkrümelspur".
Ich war dicht dran, aber doch vorbei ... ;-}
Jetzt ist die Syntax klar.
Gruß Christian
AW: Excel zu Word Tabellenlayout
04.07.2020 08:49:39
Luschi
Hallo Christian,
damit die Fehlermeldung nur erscheint, wenn auch ein Fehler aufgetreten ist, zum Schluß den _ Code so umbauen:

.ApplyStyleLastRow = True
.Cell(lngRow, 1).Merge MergeTo:=.Cell(lngRow, 4)
End With
GoTo EndCode
SheetPositionWord_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure SheetPositionWord  _
of module mdl_Excel_Word in Zeile " & Erl
EndCode:
Set wordTab = Nothing
Set wordDoc = Nothing
Set wordObj = Nothing
Set wordCel = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Excel zu Word Tabellenlayout
04.07.2020 08:56:59
Christian
Hallo Luschi,
besten Dank für den Hinweis. Das hat mich zwar gestört, lag aber in der Prioritätenliste nicht soweit oben.
Gruß Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige