Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
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 (VBA) > Word (Formatiert) erzeugen und a

aus Excel (VBA) > Word (Formatiert) erzeugen und a
28.11.2016 23:01:00
Dominik
Guten Abend zusammen,
Ein Thema lässt mich nicht los...
Die heutige Ausgangslage:
Ich muss regelmässig Vertragsdokumente erstellen, und zwar auf Basis eines einmal festgelegten Standarddokuments. Ich gehe also hin und kopiere mir die Bausteine die ich benötige zusammen und füge sie in einem neuen Word-Dokument ein, bereinige und formatiere das Dokument und voila, fertig.
Das ist natürlich nicht nur extrem fehleranfällig, sondern Ressourcen bindend.
Ziel ist nun eine Dokumentation der Bausteine in Excel (übersichtlicher, Historie ablesbar, etc.) quasi als Ausgangslage/Startpunkt. In diesem Dokument kann ich mir via Dropdownlisten, Sverweis, wenn-Funktion, etc. die Bausteine aussuchen, die ich benötige, soweit so gut, das ist Fleissarbeit.
Die Idee ist nun, dass ich einen CommandButton zur Verfügung habe, der mir aus Excel heraus eine Word-Datei mitsamt der gewählten Bausteine erstellt, und zwar in einer bestimmten Reihenfolge (und auf einem von mir zu definierenden Ziel-Pfad ablegt).
Die Word-Datei müsste auch ein spezielles Format haben, z.B. 2-spaltig, Textgrösse so und so, Überschrift Fett, etc. und bearbeitbar sein, da sich das Dokument im Verhandlungsprozess noch dauernd ändern wird.
Nur... wie zur Hölle macht man das?
Ist es überhaupt der richtige Weg via Excel? Macht man das besser aus Word heraus und liest Excel aus, fügt die Inhalte "nur" in Textfelder ein? Fragen über Fragen..
Vielen herzlichen Dank für Eure Inputs. Vielleicht hat ja zufälligerweise jemand dazu bereits mal was getextet.
Beste Grüsse,
Dominik

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Schau Dir mal in Word die Schnellbausteine an...
29.11.2016 11:42:14
Michael
Dominik,
...das ist eine durchaus nicht zu unterschätzende Möglichkeit, vorgefertigte Texte (auch formatiert!) in Word-Dokumente einzupflegen. Wenn Du das mit einer sauberen Word-Vorlage kombinierst kommst Du schon sehr weit, ohne auf VBA oder Umwege in eine andere Office-Anwendung oder gar Drittprogramme setzen zu müssen.
Ein weiterer Vorteil bei der Nutzung von Schnellbausteinen - wenn man das richtig einrichtet, kann man soetwas ggf. auch "teamweit" anderen Kollegen_Kolleginnen bereitstellen...
LG
Michael
AW: Schau Dir mal in Word die Schnellbausteine an...
29.11.2016 13:00:32
Dome
Guten Tag Michael,
Besten Dank für Deinen Input.
Als ich die Fragestellung anging, habe ich das (auch mit Forenhilfe) erstellt, allerdings via AutoText. Ich habe eine Word-Vorlage erstellt, alle Textbausteine als AutoText erfasst und eine AutoForm erstellt. Diese sieht der User, wenn er auf das Dokument zugreift und kann via Checkbox die notwendigen Bausteine auswählen. Das ergibt allerdings ein riesiges Formular, sehr unübersichtlich, wäre allerdings, falls nicht anders möglich, eine Alternative.
Aktuell habe ich eine andere Variante ausprobiert, und zwar habe ich alle Bausteine in Excel erfasst, in allen Varianten, da verschiedene Kombinationen zulässig sind. Eine Eingabemaske erlaubt die Auswahl der Bausteine, welche auf einer bestimmten Mappe geplottet werden. Diese Mappe (resp. die Markierung) wird dann in ein Word-Dokument kopiert und gespeichert/abgelegt.
Sub BereichNachWord()
'Kopiert den aktuellen Druckbereich des gewählten Blattes und fügt diesen
'als Excel-Tabelle im angegebenen Word-Dokument an der gewählten Textmarke ein
'----- Anpassen -----
Const Wdoc As String = "O:ZielverzeichnisVorlage_Word.docx" 'Ziel-Dokument Word
Const QBlatt As String = "Output" 'Quell-Blatt Excel
Const Tm As String = "Vertragsgrundlagen" 'Name der Word-Textmarke
'----- Ende -----
Dim Wb As Workbook
Dim WsQ As Worksheet
Dim rQ As Range
Dim oWord As Object
Dim oDoc As Object
Set Wb = ThisWorkbook 'Ausgangspunkt: Diese Mappe
Set WsQ = Wb.Worksheets(QBlatt) 'Das Quell-Blatt dieser Mappe
'Word öffnen, wenn noch nicht offen
On Error Resume Next
Set oWord = GetObject(, "Word.Application")
If Err.Number  0 Then
Set oWord = CreateObject("Word.Application")
End If
Err.Clear
On Error GoTo 0
ThisWorkbook.Worksheets("Output").Activate
'Quell-Bereich kopieren...
Row = ThisWorkbook.Worksheets("Output").Range("B65536").End(xlUp).Row
ThisWorkbook.Worksheets("Output").Range(Cells(1, 1), Cells(Row, 7)).Copy
'Ziel-Dokument öffnen
Set oDoc = oWord.Documents.Open(Wdoc)
'kopierten Bereich als Excel-Tabelle einfügen
oDoc.Bookmarks(Tm).Range.PasteExcelTable False, False, False
'Word/Ziel-Dokument anzeigen
With oWord
.Visible = True
.ActiveWindow.WindowState = 0
.Activate
End With
End Sub

Hier kommt dann die Frage auf, wie ich mehrere Textmarken (davon gibts im Word-Dokument natürlich einige) ins Word-Dokument schreibe.
Const Wdoc As String = "O:ZielverzeichnisVorlage_Word.docx" 'Ziel-Dokument Word
Const QBlatt As String = "Output" 'Quell-Blatt Excel
Const Tm1 As String = "Vertragsgrundlagen" 'Name der Word-Textmarke
Const Tm2 As String = "Vertragsverhältnis" 'Name der Word-Textmarke
Const Tm3 As String = "Beteiligte_Personen" 'Name der Word-Textmarke
Anzeige
Wusste doch, dass mir das bekannt vorkommt...
29.11.2016 13:16:34
Michael
Dominik,
denn habe ich das (auch mit Forenhilfe) erstellt dieser Code ist im Original von mir ;-); es sind sogar noch meine Kommentare drin...
Ich weiß jetzt allerdings nicht so recht, wo Du aktuell Hilfe brauchst. Wenn es Dir beim o.a. bestehenden Code darum geht, die verschiedenen Textmarken nicht über Konstanten zu definieren (weil es derer viele gibt) dann gäbe es natürlich die Idee die diversen Textmarken auf einem Tabellenblatt(-Bereich) zu sammeln und dann in einer Schleife abzuarbeiten bzw. wenn Du sowieso die Einfüge-Texte in einer Tabelle wartest, dann je Einfüge-Text auch die zugehörige Textmarke zu erfassen. Das ließe sich in den o.a. Grundcode vermutlich schon integrieren...
LG
Michael
Anzeige
AW: Wusste doch, dass mir das bekannt vorkommt...
29.11.2016 15:26:13
Dome
Hallo Michael,
Ein ehemaliger Mitarbeiter hat mir diesen Code überlassen. Offenbar habt Ihr Kontakt gehabt. Was für ein Zufall!
Du musst Dir die Mappe "Output" als A4 Format vorstellen, einfach in Excel. Die Seite ist in 2 Spalten gesplittet, links und rechts sind Bausteine eingetragen (von Excel zusammengesucht via Eingabemaske). Mein Problem ist nun, dass links und rechts natürlich die eingefügten Baustein verrissen werden (wegen der Zellstruktur).
Zuerst habe ich eine Umgehung gesucht und wollte die ganze Mappe kopieren und als Word plotten lassen. Das funktioniert aber eben auch aufgrund der Zellstruktur nicht.
Deshalb suche ich eine Möglichkeit, DIREKT auf die Bausteine, welche sich irgendwo im Excel-Dokument befinden, zuzugreifen und diese via Textmarken in Word einzufügen. Deshalb auch die vielen Textmarken. Die Frage ist nur wie ich das machen soll..
Anzeige
AW: Wusste doch, dass mir das bekannt vorkommt...
29.11.2016 16:09:38
Michael
Hallo!
Ein ehemaliger Mitarbeiter hat mir diesen Code überlassen. Offenbar habt Ihr Kontakt gehabt. Was für ein Zufall!
Und er hat gesagt Du brauchst Dich nicht für VBA zu interessieren, geh einfach ins Forum und die machen Dir das kostenlos?! Na das ist ja klasse...
Bzgl. Deiner ergänzenden Ausführungen: Ich hab keine Ahnung wie die Dokumentenstruktur bei Dir aussieht, weder Word noch Excel, und auch keine Ahnung mehr, was die damalige Ausgangslage war. Deshalb kann ich bei so einer vagen Angabe
Deshalb suche ich eine Möglichkeit, DIREKT auf die Bausteine, welche sich irgendwo im Excel-Dokument befinden, zuzugreifen und diese via Textmarken in Word einzufügen
auch nicht konkret helfen, sondern nur nochmal sagen: Geh die entsprechenden Zellen in Excel in einer Schleife durch und übergib die Zellwerte dann jeweils an Word.
Wenn Du konkrete Bsp-Dateien (Plural, weil ja Word & Excel gefragt ist) zur Verfügung stellst, kann man sich das evtl. anschauen.
Ich allerdings diese Woche nicht mehr, erst wieder ab Montag evtl.
LG
Michael
Anzeige
AW: Wusste doch, dass mir das bekannt vorkommt...
29.11.2016 16:49:09
Dome
Guten Abend Michael,
Wenn ich eine Frage zum Code habe, resp. diesen zu ergänzen, sehe ich keinen Grund warum ich mit dieser Frage nicht in ein Forum gehen sollte. Ja, ich bin kein Hirsch in VBA, das gebe ich zu.
Wenn Du oder sonst jemand sich dem (aus irgendwelchen Gründen) nicht annehmen kann/möchte/will, dann werde ich das selbstverständlich so respektieren, ich hab da keine Ansprüche auf irgendwas. Mir ist durchaus bewusst, dass Deine Hilfe freiwillig und in Deiner Freizeit geschieht, also ganz herzlichen Dank an dieser Stelle.
Die beiden Dateien habe ich in den Anhang gestellt.
Ich wäre sehr froh wenn Du mich hier weiterhin unterstützen könntest.
Einen schönen Abend wünsche ich Dir.
Beste Grüsse
Dominik
https://www.herber.de/bbs/user/109801.doc
https://www.herber.de/bbs/user/109802.xlsm
Anzeige
Ich kann erst ab Mo wieder helfen! Lasse offen,owT
29.11.2016 16:55:20
Michael
AW: Ich kann erst ab Mo wieder helfen! Lasse offen,owT
05.12.2016 10:26:17
Dome
Guten Morgen Michael,
Ich bin bei meinem Code selber etwas weiter gekommen, habe nun zwei Dokumente, ein Excel mit allen Daten und eine Word-Vorlage mit Textmarken.
Der folgende Code schreibt mir die jeweiligen Daten ins Word-Dokument, soweit so gut.
Das wesentlichste Problem, das ich allerdings noch habe, ist folgendes: Die Zellen sollen nur unter bestimmten Voraussetzungen übergeben werden.
Als Lösung habe ich mir Folgendes gedacht: Wenn in Spalte (A:A) ein "x" steht (z.B. Zelle A1), soll es mir die Zelle aus Spalte (B:B), z.B. B1 kopieren, und bei der Textmarke einfügen. So habe ich Excel auch vorbereitet, nur kann ich das nicht in den entsprechenden Code übersetzen und da wäre ich sehr froh um Deine Hilfe.
(Ich werde Dir bei Bedarf noch meine Excel-Datei zur Verfügung stellen)
Private Sub CommandButton1_Click()
Dim wdApp As Object ' Word.Application
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If wdApp Is Nothing Then Set wdApp = CreateObject("Word.Application")
On Error GoTo 0
'wdApp.ActiveDocument.Unprotect
wdApp.Visible = True
wdApp.Documents.Add "C:\DOC Export_Textmarke.dotx"
' Ausgabe der Textmarken fur Testzwecke
Dim i As Integer, sStr As String
sStr = wdApp.ActiveDocument.Bookmarks.Count & "  Textmarken:" & vbCrLf
For i = 1 To wdApp.ActiveDocument.Bookmarks.Count
sStr = sStr & wdApp.ActiveDocument.Bookmarks(i).Name & vbCrLf
Next
MsgBox sStr
wdApp.ActiveDocument.Bookmarks("Textmarke1").Range = Range("b1")
wdApp.ActiveDocument.Bookmarks("Textmarke2").Range = Range("b2")
wdApp.ActiveDocument.Bookmarks("Textmarke3").Range = Range("b3")
wdApp.ActiveDocument.Bookmarks("Textmarke4").Range = Range("b4")
wdApp.ActiveDocument.Bookmarks("Textmarke5").Range = Range("b5")
wdApp.ActiveDocument.Bookmarks("Textmarke6").Range = Range("b6")
wdApp.ActiveDocument.Bookmarks("Textmarke7").Range = Range("b7")
wdApp.ActiveDocument.Bookmarks("Textmarke8").Range = Range("b8")
Set wdApp = Nothing
End Sub

Anzeige
AW: Ich kann erst ab Mo wieder helfen! Lasse offen,owT
05.12.2016 15:39:59
Dome

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige