Como criar uma macro do Outlook que atualiza os atributos de uma tabela para reduzir uma tabela ao texto contido sem quebra automática?

Como criar uma macro do Outlook que atualiza os atributos de uma tabela para reduzir uma tabela ao texto contido sem quebra automática?

Atualizada:Macro atualizada com correção.

Versão: Outlook 2013

Eu quero poder...

  1. Altere o tamanho da fonte do texto na tabela.(Feito)
  2. Remova (desmarque) os atributos "Largura Preferencial" dos atributos ativos da tabela, coluna e célula.
  3. Remova (desmarque) o atributo "Altura especificada" das linhas da tabela.

Se eu usar aTbl.Columns.PreferredWidth = Uncheckedpara compactar as colunas, ele faz uma quebra de linha e não desmarca a caixa. Eu quero que NÃO haja quebra de linha.

Se eu usar o autoFit, será igual a aTbl.Columns.PreferredWidth = Unchecked.

Se eu definir as colunas individualmente, será igual a aTbl.Columns.PreferredWidth = Unchecked.

Tive que importar a biblioteca de objetos do MS Word:

Importação da biblioteca de objetos do MS Word

O que tenho até agora:

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

Como é antes do Script:

Antes

Resultado esperado:

resultado esperado

Depois de executar sem aTbl.Columns.PreferredWidth = Unchecked(fechar, mas não compactar as colunas):

Com largura preferida

Depois de correr com aTbl.Columns.PreferredWidth = Unchecked(apenas.. Não):

Sem PreferredWidth

Exemplo das configurações que precisam ser alteradas para alterar a tabela corretamente:

Propriedades da Tabela - Tabela Propriedades da Tabela - Linha Propriedades da Tabela - Coluna Propriedades da Tabela - Célula

Responder1

Para mim isso funcionou:

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

informação relacionada