Автоматическая настройка на содержимое, а затем на проблемы с окнами

#vba #ms-word

#vba #ms-word

Вопрос:

Я пытаюсь написать скрипт для автоматической подгонки таблиц сначала к содержимому, а затем к window n Word 2010, если они имеют хотя бы определенную ширину.

Когда я вручную выполняю автоматическую подгонку к содержимому, а затем к окну, таблицы выглядят красиво и равномерно распределены, однако, если я выполняю автоматическую подгонку ТОЛЬКО к окну, у них, как правило, очень широкие первые столбцы и сжатые другие столбцы.

код:

 Sub AutoFitTables()

  If ActiveDocument.Tables.Count > 0 Then
    Dim objTable As Object

    Application.Browser.Target = wdBrowseTable
    For Each objTable In ActiveDocument.Tables
      ' Check the table width 
      If objTable.Columns.Width > 11520 Then
        objTable.AutoFitBehavior (wdAutoFitContent)
        ' Again only fit tables above a certain width
        If objTable.Columns.Width > 11520 Then
           objTable.AutoFitBehavior (wdAutoFitWindow)
        End If
      End If
    Next
  End If

End Sub
 

проблема:

Результат тот же, что и при ручной автоматической подгонке ТОЛЬКО к окну. Это похоже на то, что сначала он игнорирует автоматическую подгонку к содержимому

Есть ли что-то, чего мне здесь не хватает? Или у кого-нибудь есть предложения о том, как добиться того же эффекта, что и ручная подгонка к контенту, а затем к окну?

Редактировать:

Это также, по-видимому, игнорирует ограничение ширины. Я полагаю, что таблица with возвращается в Twips, поэтому должно быть только 11907 вдоль короткого края и 16840 вдоль длинного края, но независимо от того, насколько большим я установил ограничение (например objTable.Columns.Width > 20000 ), оно все равно автоматически соответствует всем таблицам. Так что, если кто-нибудь знает, почему это происходит, это тоже было бы полезно

Комментарии:

1. Какое у вас свойство .preferredwidth установлено как . docs.microsoft.com/en-us/office/vba/api /…