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

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

Aktualisiert:Makro mit Fix aktualisiert.

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 (deaktivieren Sie) die Attribute „Bevorzugte Breite“ aus den aktiven Attributen der Tabelle, Spalte und Zelle.
  3. Entfernen Sie (deaktivieren Sie) das Attribut „Angegebene Höhe“ aus den Zeilen der Tabelle.

Wenn ich aTbl.Columns.PreferredWidth = Uncheckeddie Spalten komprimiere, wird ein Zeilenumbruch durchgeführt und das Kontrollkästchen nicht deaktiviert. Ich möchte, dass kein Zeilenumbruch durchgeführt wird.

Wenn ich AutoFit verwende, 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:

Importieren einer MS Word-Objektbibliothek

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

So sieht es vor dem Skript aus:

Vor

Erwartetes Ergebnis:

erwartetes Ergebnis

Nach dem Ausführen ohne aTbl.Columns.PreferredWidth = Unchecked(Schließen, aber Komprimieren der Spalten):

Mit bevorzugter Breite

Nach dem Ausführen mit aTbl.Columns.PreferredWidth = Unchecked(einfach … nein):

Ohne bevorzugte Breite

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

Tabelleneigenschaften - Tabelle Tabelleneigenschaften – Zeile Tabelleneigenschaften - Spalte Tabelleneigenschaften – Zelle

Antwort1

Bei mir hat das funktioniert:

                aTbl.Columns.PreferredWidth = Unchecked
                aTbl.Columns.PreferredWidthType = wdPreferredWidthAuto

verwandte Informationen