#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 /…