ich schreibe atm an einem Addin für Word. Dieses legt ein ContentControl (wdContentControlRichText) an und fügt eine Tabelle hinzu. Leider ist vor und nach der Tabelle jeweils ein Zeilenumbruch, den ich selbst nicht hinzugefügt habe. Ich habe schon versucht diese über den Range des Controls zu löschen. Aber irgendwie hat das nicht gefruchtet. Ich habe da schon einige Stunden reingesteckt und komm nicht weiter.
Code zum Hinzufügen:
var range = Globals.ThisAddIn.Application.Selection.Range; var contentControl = range.Document.ContentControls.Add(WdContentControlType.wdContentControlRichText, range); var table = contentControl.Range.Tables.Add(contentControl.Range, 10, 2, WdDefaultTableBehavior.wdWord9TableBehavior); table.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent; table.PreferredWidth = 100; table.Range.Font.Name = "Courier New"; var caption = "Beschriftung"; table.Range.InsertCaption(WdCaptionLabelID.wdCaptionTable, caption, false, WdCaptionPosition.wdCaptionPositionBelow);
Ich bin mir nicht sicher, ob die überhaupt weggehen. Wenn ich mich richtig erinnere, Arbeitet Word selbst fast ähnlich. Wenn Du dort 2 Tabellen erstellst, sind diese erst einmal mit einer Leerzeile getrennt. Entfernst Du die manuell, hängen beide Tabellen danach so zusammen, das Du sie nachträglich nicht (oder nur schwer) wieder auseinander bekommst. Zumindest ging mir das mit Word häufiger so. Vielleicht ist das "behaviour by design".
Also per Hand bekomme ich die weg. Nur automatisiert nicht :(
– Gast 11.03.2011
1 Antwort
0
Folgender "Hack" hilt hier. Lösung möchte ich das lieber nicht nennen :) Nachdem ich auch nicht feststellen konnte, woher die Leerzeile zu Beginn stammt und auch mehrfach erfolglos versucht habe, den Range zu löschen, habe ich kurzerhand ein Makro aufgezeichnet und die Stellen per Hand entfernt. Erschien mir am einfachsten, ist aber weder elegant noch sicher.
Es kann sein, das die Syntax nicht korrekt ist, da ich es direkt in Word 2007 mit VBA versucht habe. Hier sicherheitshalber mein vollständiges Makro in Word:
Sub TestMakro() Dim range As range Dim ctrl As ContentControl Dim table As table Dim caption As String
Set range = Application.Selection.range Set ctrl = range.Document.ContentControls.Add(WdContentControlType.wdContentControlRichText, range) Set table = ctrl.range.Tables.Add(ctrl.range, 10, 2, WdDefaultTableBehavior.wdWord9TableBehavior)