Wie erstelle ich ein Outlook-Makro, das die Attribute einer Tabelle aktualisiert, um eine Tabelle ohne Zeilenumbruch auf den enthaltenen Text zu verkleinern?

0

Aktualisierte: Aktualisiertes Makro w / fix.

Version: Outlook 2013

Ich möchte in der Lage sein...

  1. Ändern Sie die Schriftgröße des Textes in der Tabelle. (Erledigt)
  2. Entfernen Sie die Attribute "Bevorzugte Breite" aus den aktiven Attributen für Tabelle, Spalte und Zelle (deaktivieren Sie sie).
  3. Entfernen Sie das Attribut "Angegebene Höhe" aus den Tabellenzeilen (deaktivieren Sie es).

Wenn ich benutze aTbl.Columns.PreferredWidth = Unchecked Zum Komprimieren der Spalten wird ein Zeilenumbruch ausgeführt und das Kontrollkästchen nicht deaktiviert. Ich möchte, dass es NICHT umbrochen wird.

Wenn ich autoFit benutze, sieht es genauso aus wie aTbl.Columns.PreferredWidth = Unchecked.

Wenn ich die Spalten einzeln einstelle, sieht es genauso aus wie aTbl.Columns.PreferredWidth = Unchecked.

Musste die MS Word-Objektbibliothek importieren:

MS Word Object Library Import

Was ich bisher habe:

Public Sub FormatSelectedText()
    Dim objItem As Object
    Dim objInsp As Outlook.Inspector

    ' Add reference to Word library in VBA Editor, Tools, References
    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Dim objSel As Word.Selection
    'On Error Resume Next

    'Reference the current Outlook item
    Set objItem = Application.ActiveInspector.CurrentItem
    If Not objItem Is Nothing Then
        If objItem.Class = olMail Then
            Set objInsp = objItem.GetInspector
            If objInsp.EditorType = olEditorWord Then
                Set objDoc = objInsp.WordEditor
                Set objWord = objDoc.Application
                Set objSel = objWord.Selection

                objSel.Font.Size = 8
                Dim aTbl As Word.Table
                For i = 1 To objSel.Tables.Count()
                    Set aTbl = objSel.Tables.Item(i)
                    aTbl.Borders.InsideLineStyle = wdLineStyleSingle
                    aTbl.Borders.OutsideLineStyle = wdLineStyleSingle
                    aTbl.Rows.Height = Unchecked
                    aTbl.Rows.AllowBreakAcrossPages = False
                    aTbl.Columns.PreferredWidth = Unchecked
                    aTbl.Columns.PreferredWidthType = wdPreferredWidthAuto
                    aTbl.PreferredWidth = Unchecked
                Next
            End If
        End If
    End If

    Set objItem = Nothing
    Set objWord = Nothing
    Set objSel = Nothing
    Set objInsp = Nothing
End Sub

Wie es vor Script aussieht:

Before

Erwartetes Ergebnis:

Expected Result

Nach dem Laufen ohne aTbl.Columns.PreferredWidth = Unchecked (Schließen Sie die Spalten, ohne sie zu komprimieren):

With PreferredWidth

Nach dem Laufen mit aTbl.Columns.PreferredWidth = Unchecked (Einfach nein):

Without PreferredWidth

Beispiel für die Einstellungen, die geändert werden müssen, um die Tabelle korrekt zu ändern:

Table Properties - Table Table Properties - Row Table Properties - Column Table Properties - Cell

ScrappyDev
quelle
Das klingt nett. Was hast du versucht? Wo steckst du fest?
Raystafarian
Ich glaube, ich habe gefunden, wie man die Schrift aktualisiert (ungetestet), kann aber keine Möglichkeit finden, die Tabellenattribute zu aktualisieren. Diese Seite gefunden: slipstick.com/developer/…
ScrappyDev
Ich habe jetzt die Tabellenbreite und die Zeilenhöhe richtig eingestellt, aber die Zellenbreite funktioniert nicht richtig.
ScrappyDev
Was ist, wenn Sie versuchen, mit .autofit?
Raystafarian
Als ich das versuchte, sah es genauso (durcheinander) aus wie damals aTbl.Columns.PreferredWidth = Unchecked
ScrappyDev

Antworten:

1

Bei mir hat das geklappt:

                aTbl.Columns.PreferredWidth = Unchecked
                aTbl.Columns.PreferredWidthType = wdPreferredWidthAuto
Kestutis
quelle
Wenn ich die benutze und die verschiebe aTbl.PreferredWidth = Unchecked bis zum Ende der for-Schleife funktioniert es.
ScrappyDev