| 

.NET C# Java Javascript Exception

2
Servus zusammen!

Hab ein kleines Tool geschrieben mit dem Adressen an Word und damit ein Serienbrief erstellt werden kann. Dafür nutze ich MailMerge.
Mein Problem an der Stelle: Im erzeugten Serienbrief sind alle meine Addins weg... Chef sauer und ich ratlos.
Könnt ihr mir helfen? Hier mein Code den ich benutze:

Imports MSWord = Microsoft.Office.Interop.Word
Imports MSCore = Microsoft.Office.Core

Private WithEvents _wordApp As MSWord.Application
Private WithEvents _wordDocument As MSWord.Document

Public Sub WordSerienbriefÖffnen(vorlage As String)
Dim vorlangenObject As Object = vorlage
_wordDocument = _wordApp.Documents.Open(vorlangenObject)

_wordApp.Visible = True
_wordApp.ScreenRefresh()
End Sub

Public Sub SerienbriefErzeugen(datenquelle As String)
With _wordDocument.MailMerge
.MainDocumentType = MSWord.WdMailMergeMainDocType.wdFormLetters
.OpenDataSource(datenquelle, MSWord.WdOpenFormat.wdOpenFormatAuto, _
False, False, True, False, "", "", False, "", "", "", "", "")
.Destination = MSWord.WdMailMergeDestination.wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = MSWord.WdMailMergeDefaultRecord.wdDefaultFirstRecord
.LastRecord = MSWord.WdMailMergeDefaultRecord.wdDefaultLastRecord
End With
.Execute(True)

End With
_wordDocument.Close(False)
_wordDocument = Me._wordApp.ActiveDocument

End Sub
12.03.2012
daWastl 277 1 7
1 Antwort
0
Mir ist der Fehler unklar. Was bedeutet das genau, alle Add-ins sind weg?

Das Konstrukt um Documents.Open kapier ich nicht, wieso übergibst du Documents.Open ein Objekt, nicht einen String?

Willst du nicht vielmehr ein neues Dokument über einer Vorlage erzeugen? Dafür wäre Docuemnts.Add zuständig. Aber vielleicht ist die Benennung verwirrend, und vorlage bezeichnet bloß das Seriendruck-Hauptdokument, nicht eine Word-Dokumentvorlage.

Also bei der Fehlerbeschreibung und schon beim Word-VBA-Code sind einige Fragen offen, bevor ich vielleicht Hinweise geben könnte, warum da was schiefläuft.
13.03.2012
mupan 575 8
beim Open-Parameter handelt es sich um einen ByRef-Parameter
Damit hier diese doofe Warnung wegbleibt geh ich so vor.
Korrekt vorlage bezeichnet ein Seriendruck-Hauptdokument, in welchem die Mergefields hinterlegt sind und dabei handelt es sich zeitgleich aber auch um eine DOT bzw. DOTX-Vorlage.

Es handelt sich hierbei um KEINEN VBA sondern um VB.NET-Code. Ganz wichtig :)

Was bedeutet AddIns sind weg: Nach o.g. Aufruf fehlen die in Word registrierten AddIns. Zwar sind sind sie noch unter Aktive AddIns eingetragen, aber die Steuerelemente (CommandBars/Buttons) sind nicht sichtbar.
daWastl 13.03.2012
Ein Seriendruck-Hauptdokument sollte ein .doc[x] sein, kein .dot[x]! Da eine echte .dot[x] auch u.a. CommandBars enthalten kann, ändert das Öffnen als Dokument natürlich auch die Word-Oberfläche.
@VBA/VB.NET: Dein VB.NET interoperiert mit Word, Documents.Open, MailMerge usw. sind Word-VBA. Wenn die Verwendung einer .doc[x] als Hauptdokument dein Problem nicht löst, versuch 1. den Mailmerge-Vorgang als "Makro aufzuzeichnen" (Ribbon Ansicht / View) und vergleich den Code mit deinem, 2. die Anweisungen als Word-VBA auszuführen (Sub oder Immediate-Fenster), auch 1. und 2. in Kombination.
mupan 13.03.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH