Microsoft Excel

Herbers Excel/VBA-Archiv

VBA: Excel Werte in Word einfügen


Betrifft: VBA: Excel Werte in Word einfügen von: Sven
Geschrieben am: 19.09.2017 12:30:56

Hallo zusammen,

der Betreff ist etwas kurz, daher folgend eine umfassendere Beschreibung meines kleinen Problems:

Ich habe eine Excel-Tabelle (A-X). Jede Zeile beinhaltet ein Datenpaket für eine Rechnung mit verschiedensten Daten. Es können beliebig viele neue Datensätze (neue Zeilen) für neue Rechnungen in der Tabelle ergänzt werden.

Ich habe es mit VBA nun bereits geschafft, dass ich bestimmte Zellenwerte (z.B. den Wert aus "B5") per Textmarken an die richtige Stelle meiner Word-Datei (Die Rechnung) einfüge. Das klappt wunderbar.

Der Quellcode dazu sieht momentan so aus:

Sub Makro1()

Dim appWord     As Object
Dim docTest     As Object

Set appWord = CreateObject("Word.Application")
Set docTest = appWord.Documents.Add("file:///C:\Users\nic\Desktop\Rechnung.docx")

appWord.Visible = True

docTest.Activate
docTest.Bookmarks("Firmenname").Range.Text = Range("B5")
docTest.Bookmarks("Straße").Range.Text = Range("C5")
docTest.Bookmarks("Nummer").Range.Text = Range("D5")
docTest.Bookmarks("PLZ").Range.Text = Range("E5")
docTest.Bookmarks("Ort").Range.Text = Range("F5")

Set docTest = Nothing
Set appWord = Nothing
    
End Sub

Nun mein Problem:
Wenn ich einen neuen Datensatz (neue Zeile) für eine neue Rechnung ausfülle, möchte ich per "Knopfdruck" die Werte aus dieser letzten Zeile, und nicht den Wert aus Zeile "5" in meine Word-Datei einfügen, um zu diesem neuen Datensatz eine neue Rechnung zu erstellen.

Hier bräuchte ich Hilfe.

Vielen Dank!

LG Sven

PS: Ich arbeite mit Excel 2016, falls dies relevant ist.

  

Betrifft: AW: VBA: Excel Werte in Word einfügen von: yummi
Geschrieben am: 19.09.2017 12:35:14

Hallo Sven,

kannst Du so machen:

Sub Makro1()

Dim appWord     As Object
Dim docTest     As Object
dim letztezeile as long

Set appWord = CreateObject("Word.Application")
Set docTest = appWord.Documents.Add("file:///C:\Users\nic\Desktop\Rechnung.docx")

letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row ' hier anpassen für deine Spalte 1  _
= A

appWord.Visible = True

docTest.Activate
docTest.Bookmarks("Firmenname").Range.Text = Range("B" & letztezeile )
docTest.Bookmarks("Straße").Range.Text = Range("C" & letztezeile )
docTest.Bookmarks("Nummer").Range.Text = Range("D" & letztezeile )
docTest.Bookmarks("PLZ").Range.Text = Range("E" & letztezeile )
docTest.Bookmarks("Ort").Range.Text = Range("F" & letztezeile )

Set docTest = Nothing
Set appWord = Nothing
    
End Sub
Gruß
yummi


  

Betrifft: AW: VBA: Excel Werte in Word einfügen von: Sven
Geschrieben am: 19.09.2017 16:32:59

Vielen Dank yummi!

Das hat es ziemlich genau getroffen.

Allerdings habe ich jetzt noch das Problem, das Zahlenwerte (z.B. 200.000) scheinbar ohne Formatierung eingefügt werden (in Word also 200000), bzw. Eurobeträge (z.B. 1500,50) nur als 1500,5 angezeigt werden.

Gibt es eine Möglichkeit, die Formatierung aus Excel in Word zu übernehmen?

Das ist mein Quellcode nun:

Sub Makro1()

Dim appWord     As Object
Dim docTest     As Object
Dim letztezeile As Long

Set appWord = CreateObject("Word.Application")
Set docTest = appWord.Documents.Add("file:///C:\Users\nic\Desktop\Rechnung.docx")

letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

appWord.Visible = True

docTest.Activate
docTest.Bookmarks("Firmenname").Range.Text = Range("B" & letztezeile)
docTest.Bookmarks("Straße").Range.Text = Range("C" & letztezeile)
docTest.Bookmarks("Nummer").Range.Text = Range("D" & letztezeile)
docTest.Bookmarks("PLZ").Range.Text = Range("E" & letztezeile)
docTest.Bookmarks("Ort").Range.Text = Range("F" & letztezeile)
docTest.Bookmarks("Rechnungsnummer").Range.Text = Range("A" & letztezeile)
docTest.Bookmarks("Startdatum").Range.Text = Range("H" & letztezeile)
docTest.Bookmarks("Enddatum").Range.Text = Range("I" & letztezeile)
docTest.Bookmarks("InTagen").Range.Text = Range("J" & letztezeile)
docTest.Bookmarks("Zählerstandvorher").Range.Text = Range("M" & letztezeile)
docTest.Bookmarks("Zählerstandnachher").Range.Text = Range("O" & letztezeile)
docTest.Bookmarks("VerbrauchteMenge").Range.Text = Range("Q" & letztezeile)
docTest.Bookmarks("Arbeitspreis").Range.Text = Range("W" & letztezeile)
docTest.Bookmarks("Rechnungsbetrag").Range.Text = Range("Y" & letztezeile)
docTest.Bookmarks("MwSt").Range.Text = Range("Z" & letztezeile)
docTest.Bookmarks("Bruttobetrag").Range.Text = Range("AA" & letztezeile)
docTest.Bookmarks("Bruttobetrag2").Range.Text = Range("AA" & letztezeile)

Set docTest = Nothing
Set appWord = Nothing
    
End Sub
Dankeschön!

LG
Sven


  

Betrifft: Nimm den Zell-Text statt des Zell-Werts... von: Michael (migre)
Geschrieben am: 19.09.2017 17:18:29

Sven,

...in yummis Code überall wo bisher

Range("B" & letztezeile)
steht
Range("B" & letztezeile).Text
LG
Michael


Beiträge aus den Excel-Beispielen zum Thema "VBA: Excel Werte in Word einfügen"