Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1832to1836
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

Wordtabelle dynam. aus Excel

Wordtabelle dynam. aus Excel
04.06.2021 15:24:10
Stefan
Hallo, ich versuche aktuell aus einer Exceldatei eine vorhandene Word .docm Datei zu öffnen, diese unter neuen Namen im Pfad der Excel abspeichern. Dann in die Worddatei eine Tabelle an der Stelle einer Textmarke reinkopieren.
Der Bereich aus Excel (2 Spalten; Spalte 1 Suchvariable; Spalte 2 Wert) soll sich dynamisch anhand einer Variablen ermitteln.
Im nachfolgenden habe ich mit meinen wenigen VBA Word Kenntnissen etwas versucht. Ich scheitere jedoch bereits an dem Punkt "Speichern unter" und sowie im geöffneten WordDokument eine Tabelle einzufügen. Bis zum Stop funktioniert es bereits.
Hat jemand bis zu dem Punkt bereits Lösungsideen?

Sub Macro_RV1()
Dim AppWD As Object
Weg = "\\xxx\dfs\xxx\xxx\xxx\__MAKROS_NEU"
Auswahl_Datei = "2021-07-01 # Muster Vertrag.docm"
Dateiname = ActiveWorkbook.FullName
AnzahlDateiname = Len(Dateiname) - 5
Dateiname = Left(Dateiname, AnzahlDateiname) & "_RV"
Set AppWD = CreateObject("word.application")
With AppWD
.Documents.Open (Weg & "/" & Auswahl_Datei), ReadOnly:=True
.Visible = True
.Activate
.Selection.GoTo What:=wdGoToBookmark, Name:="VLRTab"
Stop
.Range.Collapse 0
.Range.InsertParagraphAfter
Set rng = .Paragraphs.Add(.Paragraphs(.Paragraphs.Count).Range)
.Tables.Add Range:=rng.Range, NumRows:=2, NumColumns:=2
With .Tables(.Tables.Count)
.Borders.Enable = True
.Cell(1, 1).Range.Text = "Klasse"
.Cell(1, 2).Range.Text = "Beitragssatz"
.Rows(1).Range.Font.Bold = True
.Columns(1).Width = 75
.Columns(2).Width = 75
End With
ActiveDocument.SaveAs2 Filename:= _
Dateiname, FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=15
.Visible = True
.Activate
End With
Set AppWD = Nothing
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wordtabelle dynam. aus Excel
05.06.2021 09:09:11
Oberschlumpf
Hi Stefan,
zeig doch mal deine Bsp-Dateien mit dem Code.
benötigt werden:
- Excel-DAtei mit dem gezeigten Code
- Word-Datei, die mit Hilfe des Codes aus Excel-Datei geöffnet, geändert,gespeichert werden soll
(die im Code verwendete Sprungmarke muss in Word-Datei enthalten sein)
Ciao
Thorsten
AW: Wordtabelle dynam. aus Excel
07.06.2021 17:31:43
Stefan
Hi Thorsten, danke für die Meldung.
Ich schaue einmal, ob ich Musterdateien zur Verfügung stellen kann. Wobei es sich sehr schwierig gestaltet, da ich zur Anonymisierung viel "unleserlich" machen müsste. Wie man sich evtl. denken kann, handelt es sich hier um eine berufliche Herausforderung und dadurch arbeite ich teilweise auch mit "festen" Netzlaufwerkpfaden, die ich auch unkenntlich machen müsste. Zudem beinhaltet die Excel ein individuelles Ribbon, welches auf den Prozess ausgelegt ist. Sowie etliche Tabellenblätter mit sensiblen Daten. Auch in der Worddatei existieren sensible Daten.....
Mal sehen, ich versuche evtl. mal mein Glück.... konnte allerdings die Tage nicht weiterarbeiten, da ich gesundheitlich verhindert war.
siehe auch meine Antwort an Yal.....
PS Die Sprungmarke ist im Worddokument vorhanden
Anzeige
AW: Wordtabelle dynam. aus Excel
07.06.2021 19:01:31
JoWE
Hallo Stefan,
versuchs mal so:

Option Explicit
'********************************************ACHTUNG!****************************
'**********Verweis auf Microsoft Word Obkect Library gesetzt?****************
Sub Macro_RV1()
Dim AppWD As Object
Dim wdDoc As Object
Dim Rng As Object
Dim weg As String
Dim wdAuswahl_Dazei As String
Dim Dateiname As String
Dim Auswahl_Datei As String
Dim AnzahlDateiname As Long
weg = "\\xxx\dfs\xxx\xxx\xxx\__MAKROS_NEU"
Auswahl_Datei = "2021-07-01 # Muster Vertrag.docm"
Dateiname = ActiveWorkbook.Name
AnzahlDateiname = Len(Dateiname) - 5
Dateiname = Left(Dateiname, AnzahlDateiname) & "_RV"
Set AppWD = CreateObject("word.application")
AppWD.Documents.Open (weg & "/" & Auswahl_Datei), ReadOnly:=True
Set wdDoc = AppWD.ActiveDocument
With wdDoc
.Bookmarks("VLRTab").Range.Text = Sheets(1).Cells(1, 18).Value
.Range.Collapse 0
.Range.InsertParagraphAfter
Set Rng = .Paragraphs.Add(.Paragraphs(.Paragraphs.Count).Range)
.Tables.Add Range:=Rng.Range, NumRows:=3, NumColumns:=2
With .Tables(.Tables.Count)
.Borders.Enable = True
.Cell(1, 1).Range.Text = "Klasse"
.Cell(1, 2).Range.Text = "Beitragssatz"
.Rows(1).Range.Font.Bold = True
.Columns(1).Width = 75
.Columns(2).Width = 75
End With
.SaveAs2 Filename:=weg & "\" & Dateiname & ".docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=15
End With
AppWD.Visible = True
AppWD.Activate
Set wdDoc = Nothing
Set AppWD = Nothing
End Sub
Gruß
Jochen
Anzeige
AW: Wordtabelle dynam. aus Excel
08.06.2021 19:07:49
Stefan
Hallo Jochen, danke funktioniert so super. Danke.
Eine Frage jedoch noch. Ich habe zwischenzeitlich selber noch etwas rumprobiert. Jedoch funktionieren bei deiner Lösung folgende Befehle nicht bzw. wie muss ich sie umschreiben? Wie lautet bei deiner Lösung der Befehl für Einfügen? Kann ich irgendwo eine Übersicht finden, mit den von mir dann zu nutzenden Befehlen finden?

'        .Selection.GoTo What:=wdGoToBookmark, Name:="VLRTab"
'        .Selection.Paste      'Staffelübersicht einfügen
davor hatte ich folgendes für das Bild geschrieben:

For Each Zelle In Bereich           'Bereich der Staffelübersicht ermitteln
If (Zelle.Value) = Eingabe Then
Range("L1:M" & (Zelle.Row)).CopyPicture
End If
Next Zelle

Anzeige
AW: Wordtabelle dynam. aus Excel
08.06.2021 19:50:41
JoWE
Stefan,
ich hatte mich an Deinen eingangs geposteten Code gehalten. Habe ich da Zeilen für das Einfügen von Bildern übersehen? Wo genau sollen Bilder eingefügt werden?
Also vor oder nach der Tabelle? Gibt es weitere Textmarken? Wo befinden sich die Bilder?
Gibt es bestimmte Vorgaben für die Bilder (Größe, Position, mit/ohne Rahmen etc.)?
Gruß
Jochen
AW: Wordtabelle dynam. aus Excel
09.06.2021 11:38:30
Stefan
Hi Jochen, stimmt. Im ersten Code ist es nicht enthalten. Habe bereits weiter gearbeitet. Das mit deiner Tabelle funktioniert klasse! Danke.
Nun möchte ich einen variablen Bereich aus Excel als Bild im Worddokument an einer Textmarke einfügen. Dafür fehlt mir nun der Befehl.
Bild wird hiermit ermittelt und kopiert

For Each Zelle In Bereich           'Bereich der Staffelübersicht ermitteln
If (Zelle.Value) = Eingabe Then
Range("L1:M" & (Zelle.Row)).CopyPicture
End If
Next Zelle
und nun möchte ich dieses an der Textmarke einfügen: .Bookmarks("VLRTab").?
und dass ohne .InlineShapes.AddPicture Filename:
geht das? paste funktioniert nicht. oder muss7kann ich oben bei copypicture einen Namen mitgeben, damit es an der Textmarke eingefügt wird?
Gruß Stefan
Anzeige
AW: Wordtabelle dynam. aus Excel
09.06.2021 14:29:40
JoWE
Stefan,
so sollte das klappen:

Set AppWD = CreateObject("word.application")
AppWD.Documents.Open (weg & "/" & Auswahl_Datei), ReadOnly:=True
For Each Zelle In Bereich           'Bereich der Staffelübersicht ermittelt?
If (Zelle.Value) = Eingabe Then
Range("L1:M" & (Zelle.Row)).CopyPicture
End If
With AppWD.Selection
.Goto What:=wdGoToBookmark, Name:="VLRTab"
.Paste
End With
Next Zelle
Gru?
Jochen
AW: Wordtabelle dynam. aus Excel
09.06.2021 17:57:00
Stefan
Hi Jochen klappt so 1A! Danke. Darf ich nochmal um Hilfe bitten?
An der definierten Textmarke füge ich jetzt eine andere Tabelle nach deinem Code ein. Jetzt müsste ich allerdings in Abhängigkeit der Anzahl der Kunden die Zeile mehrfach erstellen und den Kunden Namen entsprechend austauschen. Habe ich 1 Kunden, dann nur einmal die Unterschriftzeile, habe ich 3 dann 3mal die Zeile wobei der Kundennamen variiert. Dieser kommt aus dem Tabellenblatt Adressen. Wie kann man das am besten anstellen?
Für die Tabelle habe ich den Code zusammengestellt. Bei einem Kunden ideal. Bei mehreren fehlt mir im Moment das nötige Wissen wie ich die Schleife (in Abhängigkeit der Anzahl Kunden vom Blatt Adressen) und den geänderten Kundennamen (vom Blatt Adressen) einbaue.
Mein Versuch, wobei mir wie geschrieben die Schleife fehlt.

.Bookmarks("Unterschriften").Range.Text = Sheets(1).Cells(1, 18).Value
.Range.Collapse 0
.Range.InsertParagraphAfter
Set Rng = .Paragraphs.Add(.Paragraphs(.Paragraphs.Count).Range)
.Tables.Add Range:=Rng.Range, NumRows:=(AnzVN), NumColumns:=3
With .Tables(.Tables.Count)
.Borders.Enable = False
.Columns(1).Width = 150
.Columns(2).Width = 75
.Columns(3).Width = 250
.rows(1).SetHeight 50, wdRowHeightExactly
.Cell(1, 1).Range.Text = "Ort, Datum"
.Cell(1, 1).VerticalAlignment = wdCellAlignVerticalTop
.Cell(1, 1).Borders(wdBorderTop).LineStyle = xlContinuous
.Cell(1, 3).Range.Text = "Stempel/Unterschrift  " & NameVN
.Cell(1, 3).VerticalAlignment = wdCellAlignVerticalTop
.Cell(1, 3).Borders(wdBorderTop).LineStyle = xlContinuous
.rows(1).Range.Font.Size = 8
.rows(1).Range.Font.Name = "Arial"
End With
Weiteroben ermittle ich die Anzahl VN so:

Dim ZelleVN As Range
Dim BereichVN As Range
Set T5 = Worksheets("Adressen")
Set BereichVN = T5.Range("A6:A" & Cells(rows.Count, 1).End(xlUp).Row) 'Suche bis letzte gefüllte Zelle in Spalte A
AnzVN = 0
For Each ZelleVN In BereichVN           'Anzahl VN ermitteln
If (ZelleVN.Value)  "" Then
AnzVN = AnzVN + 1
End If
Next ZelleVN
Der Kundenname wird so ermittelt:

NameVN = T5.Cells(6, 5).Value & " " & T5.Cells(6, 6).Value

Anzeige
AW: Excel statt Word: Herbert GROM hilf!!!
09.06.2021 20:05:18
JoWE
bau Dir doch mehrere Textmarken auf Vorrat in das Dokument ein.
Du musst die Textmarken ja nicht alle nutzen. Warum benutzt Du eigentlich keine Dokumentvorlagr?
Mit Deinen Codeschnipseln macht das keinen Sinn mehr. Lade doch mal Deine Arbeitsmappe plus Deine Vorlage hoch. Und ändere nicht fortwährend die Vorgaben - auch das ist nicht wirklich hilfreich.
Im Übrigen solltest Du jetzt eigentlich genügend Ansätze haben um die genannten Anforderungen lösen zu können. Sehr helfen kann auch die jeweilige Suche mit z.B. "Word-VBA Absatzmarke einfügen" etc.
Im Übrigen könnte Dir vielleicht der Helfer HERBERT GROM bestimmt eine gute und evtl. sogar eine einfachere Lösung zeigen...
Gruß
Jochen
Anzeige
AW: Excel statt Word: Herbert GROM hilf!!!
10.06.2021 12:47:23
Stefan
Hi Jochen, danke für die Antwort. Mit Musterdateien etc. gestaltet es sich halt schwierig, da viele sensible Daten enthalten sind. Daher u.a. auch nur Codeschnipsel.
Aber trotzdem Dankeschön für die bisherige Hilfe. Werde mit dem bisherigen Input weitermachen. Ich "baue" mir dann auch mal wie angeregt eine Wordvorlage. Danke vielmals.
AW: Wordtabelle dynam. aus Excel
05.06.2021 23:10:39
Yal
Hallo Stefan,
Excel versucht natürlich Excel-Format zu speichern. Das könnte das Problem sein.
Eigentlich ist es eine reine Word Geschichte. Warum nicht in Word programmieren?
VG
Yal
AW: Wordtabelle dynam. aus Excel
07.06.2021 17:26:33
Stefan
Hi Yal, mittlerweile habe ich das "Saveas" in ein Wordmakro eingebaut, welches ich aus Excel starte. Funktioniert aber auch nur semi-toll.
Ansonsten ist es ein "Prozess" der in Excel startet, in Excel fortgeführt und beendet wird. Nur der Brief muss in Word mit Daten aus Excel erstellt werden.
Ich schaue einmal, ob ich Musterdateien zur Verfügung stellen kann. Wobei es sich sehr schwierig gestaltet, da ich zur Anonymisierung viel "unleserlich" machen müsste. Wie man sich evtl. denken kann, handelt es sich hier um eine berufliche Herausforderung und dadurch arbeite ich teilweise auch mit "festen" Netzlaufwerkpfaden, die ich auch unkenntlich machen müsste. Zudem beinhaltet die Excel ein individuelles Ribbon, welches auf den Prozess ausgelegt ist.
Mal sehen, ich versuche evtl. mal mein Glück.... konnte allerdings die Tage nicht weiterarbeiten, da ich gesundheitlich verhindert war.
Anzeige
AW: Wordtabelle dynam. aus Excel
08.06.2021 21:16:21
JoWE
vllt. so:

AppWD.Selection.InlineShapes.AddPicture Filename:="DeinPfad\DeinBild.jpg"
'oder vielleicht besser an eine weitere Textmarke setzen:
'.Bookmarks("picPos").Range.InlineShapes.AddPicture Filename:="Dein Pfad\Dein_Bild.jpg"

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige