Clever-Excel-Forum

Normale Version: Vertrag aus Excel Tabelle / Datenbank generieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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?
Schon selber was probiert, wie z.B. Seriendruck?
Das könnte man wahrscheinlich damit ganz ohne VBA und Word Automation machen.
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
(09.01.2019, 15: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:
(10.01.2019, 08: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.
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 ?
(10.01.2019, 17: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)...