Hallo,
ich bin Anfänger und bräuchte Rat zu folgendem Vorhaben.
Ich habe in Word ein Vertragsmuster, in das Angaben aus Excel (umfangreichere Berechnungen und Text) eingefügt werden sollen.
In Excel füllt man alles aus und klickt am Ende des Formulars auf Daten übernehmen, so dass alles in Word an die passende Stelle in das Muster eingetragen wird. Das mache ich mit dem nachfolgenden Code und das funktioniert auch gut. Leider versagt die Methode, wenn in Exel in einer Zelle mehr als 255 Zeichen stehen.
Kann mir jemand einen Tipp geben, wie ich das lösen kann?
Private wdAnw As Object
Private wdDok As Object
Sub WordMitBestehendemDokumentStarten2()
'Message-Box
MsgBox "Achtung: Die erzeugte Word-Datei mit dem AV-Vertrag muss unter einem neuen Namen mit 'Speichern unter' abgespeichert werden!!! Klicken Sie OK, um fortzufahren."
'um die aktuelle Zeile zu ermitteln
' i = 12 '
' Pfad = Cells(1, 1) 'entweder in A1 den Pfad eingeben oder diese Zeile auskommentieren... '
Pfad = ThisWorkbook.Path & "\" & "2-AV.doc"
On Error Resume Next
Set wdAnw = GetObject(, "Word.Application") 'Bestehende Word-Instanz suchen
Select Case Err.Number
Case 0 'Alles paletti
Case 429 'Es gibt soweit keine Word-Instanz
Err.Clear
Set wdAnw = CreateObject("Word.Application") 'Word-Instanz erzeugen
If Err.Number > 0 Then
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
Case Else 'Unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End Select
On Error GoTo 0
'
wdAnw.Visible = True 'Instanz sichtbar machen
wdAnw.WindowState = 0
'
'Je nach dem, ob das Dokument bereits geöffnet ist oder nicht wird verbunden
'bzw. geöffnet. Diese Differenzierung geschieht implizit.
On Error Resume Next
Set wdDok = wdAnw.Documents.Open(Filename:=Pfad)
If Err.Number > 0 Then 'Wenn Arbeitsmappe nicht existiert oder unerwarteter Fehler
BadOrHappyEnd Err.Number, Err.Description
Exit Sub
End If
On Error GoTo 0
'hier kommt das eigentliche Eintragen
'Bauherr
wdAnw.ActiveDocument.FormFields.Item("Bauherr_Name").Result = Range("Bauherr_Name")
wdAnw.ActiveDocument.FormFields.Item("Bauherr_Vertretung").Result = Range("Bauherr_Vertretung")
wdAnw.ActiveDocument.FormFields.Item("Bauherr_Straße").Result = Range("Bauherr_Straße")
wdAnw.ActiveDocument.FormFields.Item("Bauherr_PLZ").Result = Range("Bauherr_PLZ")
wdAnw.ActiveDocument.FormFields.Item("Bauherr_Ort").Result = Range("Bauherr_Ort")
|