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

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

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

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

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

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

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

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

3
Модератор
Эксперт MS Access
12091 / 4951 / 791
Регистрация: 07.08.2010
Сообщений: 14,565
Записей в блоге: 4
21.10.2016, 06:31 2
для начала уберите 0,19см на каждой клетке таблицы и сделайте автоподбор таблицы по ширине страницы
Миниатюры
VBA Word узнать вылазит ли таблица за поля страницы и есть ли переносы строк в ячейках  
0
3 / 3 / 0
Регистрация: 22.08.2015
Сообщений: 125
21.10.2016, 12:10  [ТС] 3
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
12091 / 4951 / 791
Регистрация: 07.08.2010
Сообщений: 14,565
Записей в блоге: 4
21.10.2016, 15:17 4
Цитата Сообщение от diplom-electro Посмотреть сообщение
дело не конкретно в этих двух таблицах. их куда больше разных.
поля ячеек тоже нужны - совсем без них некрасиво.
но 12 столбиков по 4 мм это 5см из 18 --не дорустимо
уменьшите с 19 до 5 --все же лучше буднт
0
21.10.2016, 15:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2016, 15:17
Помогаю со студенческими работами здесь

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

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

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

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

Ссылка на номер страницы word vba
Уважаемые форумчане! Подскажите пожалуйста, как сделать ссылку или гиперссылку на определенный...

Поля страницы в Word
Выставляю правое поле в Word 1 см, печатаю документ - измеряю поля 0,85-0,9. Ну никак там не 1 см,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru