Vertrag aus Excel Tabelle / Datenbank generieren
#1
Hallo Zusammen,

ich habe eine Exceltabelle aus der ich Daten nach Bedarf aber immer aus den gleichen Spalten in ein Word Dokument an festgelegte Positionen übernehmen möchte.

Es sollte so sein das ich in der Excel Tabelle eine oder ggf. auch mehrere Zeilen anwähle und dann das Word Dokument per Button generiert/ befüllt wird. Die Spalten werden immer die gleichen sein, auch die verschiedenen Positionen im Word Dokument.

Ich habe mal zwei Beispieldateien angefügt

Vertragsvorlage und die Beispielexceltabelle

Wenn ich vorne in der Excel Tabelle ein X setze oder ein Auswahlfeld anklicke soll er über einen Button in der Excel Tabelle die Vertragsvorlage ausfüllen.

Wenn ich bei zwei Zeilen im Feld Auswahl ein X oder Auswahlfeld anklicke und dann anschließend den Button Vertrag generieren, dann soll er einen Vertrag aus den zwei Zeilen generieren. Hier wäre aber wichtig das er in dem Fall nur Vertragsgegenstand und Betrag doppelt hinschreibt. Da Firma und Anschrift bei beiden ja gleich ist.

Danke für Eure Hilfe?


Angehängte Dateien
.xlsx   Exceltabelle Test 1.xlsx (Größe: 9,98 KB / Downloads: 6)
.doc   Vertrag Test 1.doc (Größe: 29,5 KB / Downloads: 7)
Top
#2
Schon selber was probiert, wie z.B. Seriendruck?
Das könnte man wahrscheinlich damit ganz ohne VBA und Word Automation machen.
Top
#3
Ja, hatte es mal kurz mit Serienbrief probiert das hat aber nicht richtig funktioniert
Ich fände VBA besser, da ich es auch sukzessive erweitern muss.

bräuchte aber ehrlicherweise eure Hilfe, da ich kein VBA kann
Top
#4
(09.01.2019, 16:44)Osse schrieb: Hier wäre aber wichtig das er in dem Fall nur Vertragsgegenstand und Betrag doppelt hinschreibt. Da Firma und Anschrift bei beiden ja gleich ist.

Hallo, :19:

welche beiden Zeilen wären das denn in deiner Beispieldatei? :21:
Top
#5
(10.01.2019, 09:23)Osse schrieb: ...
Ich fände VBA besser, da ich es auch sukzessive erweitern muss.

bräuchte aber ehrlicherweise eure Hilfe, da ich kein VBA kann
Wie soll das denn was werden? In einem Forum kann dir keiner VBA beibringen, höchstens Dir bei einem konkreten Problem weiterhelfen.
Du willst eine fertige Lösung und hoffst dann die mit "Frickeln" erweitern zu können. Du wirst immer wieder hier landen.

Anbei eine Funktion, die basierend auf einer Word-Vorlage mit Textmarken eine "Rechnung" erstellt.
Der Code ist nicht komplett, einige Definitionen und Funktionen fehlen (clsDelivery, GetWord, ...)
Da Du kein VBA kannst, wirst Du nichts verstehen. Deswegen zeige ich es Dir Tongue
Man könnte es "verreinfachen", die Klasse rausschmeissen usw. usf. aber Du willst es ja sukzessive erweitern.
Die wesentlichen Schritte sind: Word starten und Textmarken mit Inhalt versorgen
PHP-Code:
Function CreateInvoice As Boolean

Dim myWd
As Word.Application
Dim myDoc
As Word.Document
Dim myDelivery
As clsDelivery
Dim VorlagenDatei
As String
Dim Rechnungsdatei
As String

   On Error
GoTo CreateInvoice_Error

   Set myDelivery
= New clsDelivery
   VorlagenDatei
= wksDelivery.Parent.Path & "\Rechnungsvorlage.docx"
   Rechnungsdatei = wksDelivery.Parent.Path & "\" & myDelivery.AuftragsNr

   'Set myWd = New Word.Application
   Set myWd = GetWord
   Set myDoc = myWd.Documents.Open(VorlagenDatei)
   'myWd.Visible = True

   With myDoc
       .Bookmarks("
Kundenname").Range.Text = myDelivery.KundenName
       .Bookmarks("
KundenStrasse").Range.Text = myDelivery.KundenStrasse
       .Bookmarks("
KundePLZOrt").Range.Text = myDelivery.KundePLZOrt
       .Bookmarks("
Referenz").Range.Text = myDelivery.Referenz
       .Bookmarks("
Abholdatum").Range.Text = myDelivery.Abholdatum
       .Bookmarks("
Absender").Range.Text = myDelivery.Absender
       .Bookmarks("
AbsenderPLZ").Range.Text = myDelivery.AbsenderPLZ
       .Bookmarks("
Abgangsort").Range.Text = myDelivery.Abgangsort
       .Bookmarks("
Empfaenger").Range.Text = myDelivery.Empfaenger
       .Bookmarks("
EmpfaengerPLZ").Range.Text = myDelivery.EmpfaengerPLZ
       .Bookmarks("
Empfangsort").Range.Text = myDelivery.Empfangsort
       .Bookmarks("
Frachtrate").Range.Text = Format(myDelivery.Frachtrate, "#,##0.00")
       .Bookmarks("FrachtrateMwSt").Range.Text = Format(myDelivery.FrachtrateMwSt, "#,##0.00")
       .Bookmarks("RechnungsBetrag").Range.Text = Format(myDelivery.RechnungsBetrag, "#,##0.00")
       .Bookmarks("UmsatzSteuerId").Range.Text = myDelivery.UmsatzSteuerId
   End With

   myDoc
.SaveAs Rechnungsdatei
   myDoc
.Close False

   CreateInvoice
= True
   On Error
GoTo 0
   Exit
Function

CreateInvoice_Error:
   myDoc.Close False
   CreateInvoice
= False
   CentralErrorHandler Err
.Number, "mdAutomation", "CreateInvoice"

End Function


Und hier verkürzter Code, found in the Internet, macht i.w. das, was Du willst, musst Du nur sukzessive anpassen

PHP-Code:
Sub test()
Dim objWord As Object
Dim ws
As Worksheet

   Set ws
= ThisWorkbook.Sheets("Sheet1")

   Set objWord = CreateObject("Word.Application")

   objWord.Visible = True

   objWord
.Documents.Open "C:\test.docx" ' change as required

   With objWord.ActiveDocument
       .Bookmarks("Text1").Range.Text = ws.Range("A1").Value
       .Bookmarks("Text2").Range.Text = ws.Range("A2").Value
       .Bookmarks("Text3").Range.Text = ws.Range("A3").Value
   End With

   Set objWord = Nothing

End Sub

Mein Rat:
A: Hol Dir jemanden, der das auf Paybasis macht.
B: Versuch mit den Beschränkungen des Seriendrucks zu leben, auf diese Weise hast Du aber alles selber in der Hand

Having said that: Vielleicht hast Du ja Glück und es findet sich jemand, der das macht.
Ist ja eine nette Übung, um mal wieder Word-Automation aufzufrischen oder überhaupt zu lernen.
Top
#6
Question 
Danke für deine Mühe, werde mir das morgen mal ansehen.

Vielleicht hilft mir jemand hier ja noch für ein Beispiel was ich erweitern kann ?
Top
#7
(10.01.2019, 18:27)Osse schrieb: Vielleicht hilft mir jemand hier ja noch für ein Beispiel was ich erweitern kann ?

Hallo, :19:

hier habe ich ein Beispiel mit Download und Kommentaren im Code: :21:

Excel -> Word in Textmarken (Bookmarks)...
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste