Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1552to1556
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

Aus Excel nach Word (Textmarken / Tabellebblätter)

Aus Excel nach Word (Textmarken / Tabellebblätter)
11.04.2017 08:13:24
Florian
Einen schönen guten Morgen,
nach Tagen des Versuchens bin ich nun an dem Punkt mich an die Profis im Forum zu wenden.
Ich stehe vor folgender Aufgabe:
Ich habe eine Exceltabelle mit mehreren Tabellenblättern. Aus diesen unterschiedlichen Tabellenblättern möchte ich eine Wordvorlage befüllen. Innerhalb der Exceltabelle gibt es Bereichsnamen, die ich an die in Word befindlichen Textmarken übergeben möchte.
Ich habe in einem anderen Forum ein schon sehr hilfreichen Code gefunden und angepasst. Das Kopieren von Bereichen als Bild, Tabellen und einfachem Text funktioniert auch gut. Nur leider schaffe ich es nicht den Code so umzuschreiben, dass ich aus mindestens drei Tabellenblättern die Daten letztlich in das Word übertragen kann.
Das hier ist meine Ausgangsbasis: http://vbanet.blogspot.de/2012/10/excel-word-in-textmarken-bookmarks.html
Pro Tabellenblatt habe ich ca. 12 Inhalte, die ich in die entsprechenden Textmarken füllen muss. Es handelt sich inhaltlich um einen SLA-Bericht. Da ich die Variablen kundenspezifisch benannt habe, verzichte ich zunächst auf das Posten des Codings.
Mein Problem: Bereichsnamen aus unterschiedlichen Tabellenblättern an in Word befindliche Textmarken kopieren.
Es wäre super, wenn mir jemand bei diesem Problem weiterhelfen könnte.
Mit bestem Dank im Voraus
Flo

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bsp-Datei
11.04.2017 08:26:41
Fennek
Hallo,
es gibt so viele Varianten, dass es ohne eine - verkürzte und anonmisierte - Bsp-Datei nicht gehen wird. Es sollte deutlich werden, ob der xl-Bereich als Tabelle oder als Text in wd ergefügt werden soll.
mfg
(mit den Codes von Case habe ich auch öfter mal Verständnisprobleme)
AW: Bsp-Datei
11.04.2017 08:33:02
Florian
Hi, danke für die schnelle Antwort! Das Coding unten funktioniert nun nicht mehr... zu viel "herumgespielt".
Inhaltlich habe ich gestern noch mal neu angefangen und bin nicht fertig, da eben das Einfügen aus verschiedenen Tabellenblättern nicht funktioniert.
Ich möchte:
- auf allen drei aufgeführten Tabellenblättern sowohl
-- Text einer bestimmten Zelle einfügen
-- einen Bereich als Bild einfügen
-- und eine Tabelle einfügen. Je nach Kunde variiert die Größe der Tabelle. Dies fange ich durch indirekt ab sodass der Namensbereich immer der Tabelle entspricht und eingefügt werden soll. Es sind Pivottabellen aus meist zwei Spalten und einer unterschiedlichen Anzahl an Zeilen.
Mit bestem Dank im Voraus
Viele grüße
Flo
Option Explicit
' Namen der Textmarken im Worddokument
Const strBookmark1 As String = "Kundenadresse"
Const strBookmark2 As String = "Berichtszeitraum_Monat"
Const strBookmark3 As String = "Empfaenger"
Const strBookmark4 As String = "Service_Kunde"
Const strBookmark5 As String = "Betreff"
Const strBookmark6 As String = "Wertetabelle"
Const strBookmark7 As String = "Wertetabelle1"
' Konstante für den Speichern-Unter Dialog in Word
Const wdDialogFileSaveAs = 84
' Wenn Word nicht offen ist wird diese Variable auf True
' gesetzt und Word am Ende wieder geschlossen
' War Word schon offen, belibt es das auch
Dim blnTMP As Boolean
Public Sub Main()
Dim objWordRange As Object
Dim objDocument As Object
Dim objDialog As Object
Dim objApp As Object
Dim strDoc As String
Dim WordObj As Object
On Error GoTo Fin
' Das Worddokument mit Pfad und Name
strDoc = ThisWorkbook.Path & _
Application.PathSeparator & "SLA-Bericht.doc"
' Die Wordapplikation wird mit der Funktion "OffApp" gesucht
' ODER bei Bedarf gestartet
Set objApp = OffApp("Word")
'folgende Codezeile für Word nicht sichtbar
'Set objApp = OffApp("Word", False)
' Wenn die Word der Objektvariablen zugewiesen werden konnte dann...
If Not objApp Is Nothing Then
' Öffne das Worddokument, zugewiesen an die Objektvariable objDocument
Set objDocument = objApp.Documents.Open(Filename:=strDoc)
' With für Schreibfaule :-) Alle Bezüge auf Tabelle1 müssen
' mit einem Punkt beginnen
With ThisWorkbook.Worksheets("Empfaenger Bericht_Anschrift")
' Prüfe, ob die Textmarke vorhanden ist
If objDocument.Bookmarks.Exists(strBookmark1) = True Then
.Range("Kundenadresse").Copy
Set objWordRange = objDocument.Bookmarks(strBookmark1).Range
objWordRange.Paste
End If
' With ThisWorkbook.Worksheets("SLA")
'       If objDocument.Bookmarks.Exists(strBookmark2) = True Then
'            objDocument.Bookmarks(strBookmark2).Range = .Range("Berichtszeitraum").Text
'        End If
'        If objDocument.Bookmarks.Exists(strBookmark3) = True Then
'            objDocument.Bookmarks(strBookmark3).Range = .Range("Empfaenger").Text
'        End If
'        End With
With ThisWorkbook.Worksheets("Kunden")
If objDocument.Bookmarks.Exists(strBookmark4) = True Then
objDocument.Bookmarks(strBookmark4).Range = .Range("Service_Kunden").Value
End If
End With
'        If objDocument.Bookmarks.Exists(strBookmark5) = True Then
'            objDocument.Bookmarks(strBookmark5).Range = .Range("F2").Text
'        End If
' Kopiere einen Bereich als Bild an die Textmarke Wertetabelle
' Objektvariable objWordRange leeren
If objDocument.Bookmarks.Exists(strBookmark6) = True Then
.Range("H1:J4").CopyPicture 1, 2
Set objWordRange = objDocument.Bookmarks(strBookmark6).Range
objWordRange.Paste
Set objWordRange = Nothing
End If
' Ameisenrennen um den kopierten Bereich beenden
' und Zwischenspeicher leeren
Application.CutCopyMode = True
' Objektvariable objWordRange leeren
Set objWordRange = Nothing
' Word Speicherdialog aufrufen
Set objDialog = objApp.Dialogs(wdDialogFileSaveAs)
With objDialog
' Pfad vorgeben
.Name = "C:\Temp\"
' Wenn auf Speichern geklickt wurde...
If .Display = -1 Then
objDocument.SaveAs Filename:=.Name
End If
' Dokument schliessen
'    objDocument.Close
End With
End With
Else
' Ausgabe, wenn die Objektvariable objApp Nothing ist...
MsgBox "Applikation nicht installiert!"
End If
Fin:
If Not objApp Is Nothing Then
' Word war nicht offen, also...
If blnTMP = True Then
' ... Word schliessen
'   objApp.Quit
blnTMP = False
End If
End If
' Objektvariablen leeren
Set objWordRange = Nothing
Set objDocument = Nothing
Set objApp = Nothing
Application.CutCopyMode = True
' Wenn die Fehlernummer NICHT 0 ist, dann gib die Fehlernummer
' und die Fehlerbeschreibung aus
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
End Sub

Private Function OffApp(ByVal strApp As String, _
Optional blnVisible As Boolean = True) As Object
Dim objApp As Object
On Error Resume Next
Set objApp = GetObject(, strApp & ".Application")
Select Case Err.Number
Case 429
Err.Clear
Set objApp = CreateObject(strApp & ".Application")
blnTMP = True
If blnVisible = True Then
On Error Resume Next
objApp.Visible = True
Err.Clear
End If
End Select
On Error GoTo 0
Set OffApp = objApp
Set objApp = Nothing
End Function

Anzeige
AW: Bsp-Datei
11.04.2017 13:26:49
Florian
https://www.herber.de/bbs/user/112809.xlsx
Hier liegt eine "Beispiel-Datei". Man kann ein wenig erkennen. Er holt sich Daten aus Benannten Bereichen aus zwei Tabellenblättern. Im Bsp ist dies nur unter SLA benannt.
Hoffe es hilft weiter. Die Datenverarbeitung im Hintergrund ist nicht hübsch. Die Tabellen für den Reiter SLA kommen aus einer anderen Date und werden nur auf diesem Tabellenblatt in Form von Pivot-Tabellen angezeigt. Wenn man Pivots auch direkt an eine Textmarke bringen kann wäre es auch OK und es muss nicht über den Namen geschehen.
Anzeige
AW: mein Bsp
11.04.2017 17:16:51
Fennek
Hallo,
hier ein Muster für die Übertragung einer Zelle und eines benannten Bereichs (Book2).
Da hier kein Upload einer docx-Datei möglich ist, nur eine Beschreibung: In der wd-Datei wurden 2 bookmarks angelegt (Book1, Book2). Das xl-Makro fügt die Daten an diesen Stellen ein.
https://www.herber.de/bbs/user/112816.xlsm
mfg
(Dein Datei habe ich nicht geöffnet)
AW: mein Bsp
11.04.2017 20:29:50
Florian
Moin,
schon mal Danke. Die Funktionalität aus einem Tabellenblatt ist bekannt. Ich muss von verschiedenen Tabellenblättern Inhalte einfügen. Darin liegt das Problem. Hieran scheitere ich....
Anzeige
Excel zwei Tabellenblätter an Word Textmarke
12.04.2017 07:51:53
Florian
Würde mich freuen, wenn mir jemand sagen kann, wie ich hintereinander verschiedene Tabellenblätter ansprechen kann, um von dort via VBA die Daten (sowohl Zellbezüge als auch Bereichsnamen) an Textmarken in Word einfügen kann. Der Code hinter dem Link in Eintrag 1 funktioniert so, wie ich es mir vorstelle, nur hat er eben nur den Bezug zu einem Tabellenblatt.
Viele Grüße
AW: sheets(1).cells(1,1).copy (owt)
12.04.2017 08:46:15
Fennek

15 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige