Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 07:27   #1
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
Сообщение Перевод ширины таблиц из см в %

Мне необходимо, чтобы в документе у всех таблиц была однинаковая ширина. Т.к. поля в таблицах могут быть разные, то выравнивать их нужно в см. Но я хотел бы, чтобы ширина таблиц измерялась в % (на случай, если человек захочет изменить поля страниц в документе и чтобы ширина таблиц менялась соответственно).
Никто не подскажет, как перевести ширину всех таблиц в документе из см в %.

Код:
Sub main()
    With ActiveDocument.Tables
    
            For n = 1 To .Count
            .Item(n).PreferredWidthType = wdPreferredWidthPercent
            Next
        End With
End Sub
Такая конструкция переводит в проценты все таблицы, но ширина таблиц изменяется.

Последний раз редактировалось EducatedFool; 30.05.2009 в 13:01. Причина: Прислушался к замечанию от viter.alex :)
Busine2009 вне форума Ответить с цитированием
Старый 30.05.2009, 12:49   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Замечание по оформлению ваших сообщений: оформляйте код в теги [code][/code]

Теперь по сути. Конечно, ширина таблиц меняется. Чтобы она не изменялась, вам нужно сначала посчитать сколько в % занимает таблица, затем установить ее ширину в проценты (что вы и сделали), а затем установить то значение ширины в %, которое вы вычислили ранее.
По-моему, так. Пробуйте. Желательно ваш файл с примером, если что-то не получается.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 30.05.2009, 13:12   #3
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

А почему она меняется? Вот кусок кода:

Selection.Tables(1).PreferredWidthT ype = wdPreferredWidthPoints
Selection.Tables(1).PreferredWidth = CentimetersToPoints(17)
Selection.Tables(1).PreferredWidthT ype = wdPreferredWidthPercent

Выставляется ширина таблицы 17 см, а затем я просто меняю см на %, почему не сохраняются 17 см?
Busine2009 вне форума Ответить с цитированием
Старый 30.05.2009, 13:24   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Не знаю, почему меняется. Я попробовал у себя: все остается на месте. Word сам пересчитывает ширину таблицы в проценты от ширины страницы.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 30.05.2009, 13:31   #5
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Вот таблица. Я применяю к ней эти три команды и у меня происходит только перевод в %, а ширина та же остается.
Вложения
Тип файла: doc Doc4.doc (67.5 Кб, 12 просмотров)

Последний раз редактировалось Busine2009; 30.05.2009 в 13:33.
Busine2009 вне форума Ответить с цитированием
Старый 31.05.2009, 11:22   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Применил я эти команды, как и следовало ожидать, ширина стала такой какой нужно, а размер таблицы отображается в процентах. См. вложение. Кроме всего прочего, эта таблица у вас еще и вставлена откуда-то.
Вложения
Тип файла: doc Doc4.doc (74.5 Кб, 14 просмотров)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 31.05.2009, 11:58   #7
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

16,98 см, а должно быть 17 см.

Но я же не мог ошибиться: сделал таблицу 14,5 см, вставил в нее курсор, применил три команды. А у меня осталась та же ширина.
А с чего вы решили, что она откуда то вставлена?

Последний раз редактировалось Busine2009; 31.05.2009 в 12:00.
Busine2009 вне форума Ответить с цитированием
Старый 31.05.2009, 12:09   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от Busine2009 Посмотреть сообщение
16,98 см, а должно быть 17 см…
Да вы, юноша, эстет! Две сотых сантиметра это сколько, по-вашему? И вы сможете их различить на глаз?

Цитата:
Сообщение от Busine2009 Посмотреть сообщение
…А с чего вы решили, что она откуда то вставлена?
Таблица находится в закладке с именем OLE_LINK1
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 31.05.2009, 15:51   #9
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

У меня тоже были случаи, что таблицы становились там 16,98, но в данном случае, как была таблица 14,5 см, так и осталась.
Я попробовал, скопировал таблицу из одного документа в другой, никакой закладки не появилось.

Последний раз редактировалось Busine2009; 31.05.2009 в 15:55.
Busine2009 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование содержание ячеек и их ширины tae1980 Microsoft Office Excel 5 14.08.2009 15:25
уменьшение ширины таблицы Viteef HTML и CSS 5 18.02.2009 23:59
Сведение таблиц Funky_man Microsoft Office Excel 1 09.01.2008 07:20
Связь таблиц БД kaa БД в Delphi 5 18.09.2007 18:29