Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
3 / 3 / 0
Регистрация: 22.08.2015
Сообщений: 125

VBA Word узнать вылазит ли таблица за поля страницы и есть ли переносы строк в ячейках

20.10.2016, 22:59. Показов 2549. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть ряд документов которые нужно обработать. Выровнять по странице таблицы, удалить пустые строчки.
Просто сделать AutoFit не вариант - работает это далеко не всегда корректно.
Открываю исходную таблицу - она выходит за экран. В Свойствах таблицы есть "Ширина". но как ее получить программно ?
очевидное .width не работает.
Если выполнить Autofit по ширине экрана - таблица влазит, но пояляются переносы. Как узнать что они появились программно ?
Автоподбор по содержимому ничего для таких широких таблиц не делает.
Если кликнуть дважды на границе ячейки (я даже не знаю какой программный аналог этому действию) - переносы строк убираются, но таблица вылазит за поля. Что это за действие с таблицей в VBA ?
Собственно нужно узнать общую ширину таблицы, если она вылазит за поля документа - буду удалять некоторые столбцы.
+проконтролировать чтобы не было переносов строк в числовых ячейках таблицы
документ пример прилагаю. скриншоты тоже
Миниатюры
VBA Word узнать вылазит ли таблица за поля страницы и есть ли переносы строк в ячейках   VBA Word узнать вылазит ли таблица за поля страницы и есть ли переносы строк в ячейках  
Вложения
Тип файла: docx test.docx (59.3 Кб, 8 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2016, 22:59
Ответы с готовыми решениями:

Переносы в Word-е VBA
Привет всем! Решаю задачу но исчерпав свое знанию в VBA нужного результата не добился, надеюсь на ваши советы: В общем написал вот...

Содержимое страницы вылазит за поля

При открытии страницы в мобильном телефоне, таблица вылазит за рамки
Всем желаю здравствовать, уважаемые форумчане. Вопрос вот в чем: При открытии страницы на компе, ноуте - таблица которая находится на...

3
Модератор
Эксперт MS Access
 Аватар для shanemac51
12158 / 5010 / 803
Регистрация: 07.08.2010
Сообщений: 14,777
Записей в блоге: 4
21.10.2016, 06:31
для начала уберите 0,19см на каждой клетке таблицы и сделайте автоподбор таблицы по ширине страницы
Миниатюры
VBA Word узнать вылазит ли таблица за поля страницы и есть ли переносы строк в ячейках  
0
3 / 3 / 0
Регистрация: 22.08.2015
Сообщений: 125
21.10.2016, 12:10  [ТС]
shanemac51, дело не конкретно в этих двух таблицах. их куда больше разных.
поля ячеек тоже нужны - совсем без них некрасиво.
так как получить свойство общей ширины таблицы (оно ведь есть в свойствах значит должно быть доступно) ?
какое действие происходит когда дважды кликаешь по границе ячейки (там еще курсор меняется). что за выравнивание происходит ?

Добавлено через 21 минуту
http://msoffice-prowork.com/co... o-lesson3/
Есть отличный трюк настройки ширины столбца или высоты строки по содержимому, он часто применяет, если ширину столбца необходимо уменьшить, например, для столбца с нумерацией, но это не обязательно. Итак, двойной щелчок левой кнопкой мыши по границе заголовка столбца мгновенно изменит его размер.
странно что у меня при этом обычно выравнивается "по содержимому" вся таблица... видимо глюк какой то

ширину таблицы ок, можно посчитать по столбцам конечно, но меня не оставляется мысль что должна быть доступна ширина проще. она ведь есть в свойствах...

Добавлено через 1 час 16 минут
ок. ширину таблицы считаем вот так
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function GetTablewidth(ByVal myTable As Word.Table)
 
With myTable
     Set tRng = .Cell(1, 1).Range
    sngWdth = -tRng.Information(wdHorizontalPositionRelativeToPage)
    Do While tRng.Cells(1).RowIndex = 1
      tRng.Move unit:=wdCell, Count:=1
    Loop
    tRng.MoveEnd wdCharacter, -1
    GetTablewidth = GetTablewidth + tRng.Information(wdHorizontalPositionRelativeToPage)
  '  Debug.Print sngWdth
End With
 
 
End Function
потом можно сравнить с шириной экрана и принимать какие то действия если вылазит
Visual Basic Скопировано
1
2
3
With ActiveDocument.PageSetup
    width_max = .PageWidth - .LeftMargin - .RightMargin
End With
.AutoFitBehavior wdAutoFitWindow ужимает таблицу по ширине экрана (при этом появляются переносы слов в ячейках)
"вписать текст" использовать не хочу. при этом в разных ячейках разный шрифт получается.
.AutoFitBehavior wdAutoFitContent по идее должно выполнять подбор ширины по содержимому. как при двойном клике на границу ячейки. но ничего не происходит.
так как сделать в макросе тоже самое что происходит при двойном клике на границе любой ячейки ? "запись макроса" в данном случае не помошник - такое действие при записи невозможно (
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12158 / 5010 / 803
Регистрация: 07.08.2010
Сообщений: 14,777
Записей в блоге: 4
21.10.2016, 15:17
Цитата Сообщение от diplom-electro Посмотреть сообщение
дело не конкретно в этих двух таблицах. их куда больше разных.
поля ячеек тоже нужны - совсем без них некрасиво.
но 12 столбиков по 4 мм это 5см из 18 --не дорустимо
уменьшите с 19 до 5 --все же лучше буднт
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2016, 15:17
Помогаю со студенческими работами здесь

При вставке поля создаются ненужные переносы строк
Здравствуйте. Ситуация следующая. Офис 2007. К отчёту в Word данные следует подтягивать из листа Excel с расчётами. Копирую ячейку,...

У меня есть таблица в ней 3 столбца и 2 колонки, есть border после 1,2-й строк
Как убрать 3 border? <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Task-1</title> ...

Как узнать координаты курсора в Word в VBA?
Вот у меня абсолютно простой, но необходимый вопрос: как узнать координаты курсора в Word (т.е. в какой строке находится и какую позицию в...

Узнать есть ли конкретная таблица в бд Access?
как???

Узнать есть ли конкретная таблица в бд Access?
как???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи будет иметь приблизительный результат вычисления для метода обработки данных из double buffering.
Hrethgir 10.04.2025
Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу можно будет корректировать по ходу. Это потому что прямое соотношение. . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер