AW: Näherungslösung
12.11.2015 12:28:54
Michael
Hallo Chak!
Was Du erreichen möchtest erfordert viel Knowhow hinsichtlich Word-VBA - und das ist im Vergleich zu XL ein "ganz anderes Ballspiel", wie unsere amerikanischen Kollegen sagen würden.
Mitunter dauert deshalb auch eine Antwort etwas. Allerdings hast Du auch sehr viele unterschiedliche Fragestellungen in einen Beitrag gesteckt - auch das macht antworten nicht leichter.
Nichtsdestotrotz hier eine Näherungslösung meinerseits, mit der Du vielleicht schon auskommst. Hier einmal meine Antworten zu Deinen Fragen:
1. Da die Datei offenbar immer am Desktop des jeweiligen Nutzers liegt, musst Du in XL den Benutzernamen aus dem System auslesen und in die restlichen Pfadteile einpflegen:
'Benutzer = Environ("username")
'"C:\Users\" & benutzer & "\Desktop\Beispiel\Beispiel.docx"
2. Dafür hab ich, gem. Deines Beispiels, eine Näherungslösung, s. u.
3. Geht vermutlich, das hab ich Dir aber nicht ausprogrammiert - dafür ist mein Word VBA viel zu schwach, und das ist eine ziemliche Spielerei. Workaround siehe unten.
4. Hier würde ich bereits in Excel das Zahlenformat Deiner Tabelle (Spalte B und C) entsprechend anpassen, dass führende 0en angezeigt werden - beim Kopieren nach Word bleibt Dir dann die "sichtbare" Zahl über.
Hier also meine Näherungslösung:
- Ich würde die entsprechende Word-Datei als Dokumentenvorlage einrichten (.dotx). In dieser Vorlage alles einrichten wie benötigt (Seitenränder, Kopf- und Fußzeile etc.) inkl. einer (genau einer!) Word-Tabelle mit 3 Spalten und 2 Zeilen - auch die Tabelle gleich so formatieren wie gewünscht.
- Über XL kopierst Du dann jeweils bereichsweise Zellinhalte direkt in die Word-Tabelle
Anmerkungen:
Tabelle in Word soll mit der Anzahl der Einträgen in Excel größer werden
So, wie Du es in Deinem Beispiel vorgegeben hast, möchtest Du die XL-Zellinhalte nicht in eigenen Tabellen-Zeilen in Word, sondern als umgebrochenen Text in nur einer Zeile. Insofern ändert sich die Größe dieser Zeile automatisch, wenn mehr oder weniger Textinhalte (Zeilen) aus Excel eingefügt werden.
kann ich hier irgendwie die Spalten ansteuern
Diese Frage bezieht sich, nehme ich an, auf Word. Ja, ist in Word VBA möglich. Auch hier lassen sich Tabellen-Zellen, -Spalten und Zeilen ansteuern. Etwa
ActiveDocument.Tables(1).Cell(2, 3).Select ODER
ActiveDocument.Tables(1).Rows(1).Select
Hier noch mein Code-Vorschlag:
Sub TabelleXzuTabelleW()
'Verweis auf MS Word 14 Object Library erforderlich
Dim TabKopf As Range
Dim Spalte1 As Range
Dim Spalte2 As Range
Dim Spalte3 As Range
Dim oWord As Object
Dim Benutzer As String
Benutzer = Environ("username")
With Worksheets("Tabelle1")
Set TabKopf = .Range("A1:C1")
Set Spalte1 = .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
Set Spalte2 = .Range("B2:B" & .Cells(Rows.Count, 2).End(xlUp).Row)
Set Spalte3 = .Range("C2:C" & .Cells(Rows.Count, 3).End(xlUp).Row)
End With
Set oWord = CreateObject("Word.Application")
With oWord
.Documents.Add Template:="C:\Users\" & Benutzer & "\Desktop\Beispiel\Beispiel.docx"
.Visible = True
.Activate
End With
TabKopf.Copy
oWord.ActiveDocument.Tables(1).Rows(1).Select
oWord.Selection.PasteAndFormat (wdFormatPlainText)
Spalte1.Copy
oWord.ActiveDocument.Tables(1).Cell(2, 1).Select
oWord.Selection.PasteAndFormat (wdFormatPlainText)
Spalte2.Copy
oWord.ActiveDocument.Tables(1).Cell(2, 2).Select
oWord.Selection.PasteAndFormat (wdFormatPlainText)
Spalte3.Copy
oWord.ActiveDocument.Tables(1).Cell(2, 3).Select
oWord.Selection.PasteAndFormat (wdFormatPlainText)
Application.CutCopyMode = False
End Sub
Zusammengefasst macht der Code Folgendes:
- Definiert vier Bereiche der Exceltabelle: Überschrift und Spalten 1 - 3
- Öffnet eine bestimmte Word-Vorlage (Dokumentenvorlage, .dotx)
- In die vorhandene Word-Tabelle werden die vier Excelbereich nacheinander als Text eingetragen
Ein Verweis auf die Microsoft Word 14.0 Object Library muss gesetzt werden. Dazu im VB-Editor (in Excel) Extras -- Verweise -- Durchklicken bis zum entsprechenden Eintrag und Häkchen setzen.
Den Pfad des Word-Dokuments musst Du ggf. auch noch anpassen; zumindest dann die Dateiendung auf .dotx ändern.
Gib mal Bescheid, ob Du damit schon auskommst! Wie gesagt, Word VBA ist ein sehr weites Feld!
LG
Michael