| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Программно повернуть лист Word в альбомный |
| Автор: Нитонисе 1.3.2010, 11:21 |
| Надо повернуть лист Word в альбомный, для последующего создания там таблицы. Попутно вопрос по таблице - там нужно будет объединять ячейки (смежные по горизонтали и по вертикали), как это делается? Работаю с компонентом WordApplication. |
| Автор: chaos 1.3.2010, 11:23 |
| 4 года назад надо было подобное. помогла эта книга ![]() |
| Автор: Нитонисе 1.3.2010, 11:41 |
| Так это Дельфи. |
| Автор: Данкинг 1.3.2010, 11:54 |
| chaos, у меня такая есть. А какая разница в данном случае? |
| Автор: Нитонисе 6.3.2010, 18:08 | ||
| Открываю ворд, добавляю документ и пытаюсь его развернуть, но выскакивает ошибка. Вот код:
А вот ошибка. http://www.radikal.ru И что она означает? |
| Автор: Данкинг 6.3.2010, 18:26 |
| Нитонисе, если я не путаю, для параметров страницы в системе должен быть установлен принтер. |
| Автор: Данкинг 6.3.2010, 19:09 |
Ну да. Как иначе - лично я не в курсе. |
| Автор: Нитонисе 6.3.2010, 20:16 |
| А можно как нибудь установить фиктивный принтер? реального нет. Чтоб проверить. |
| Автор: Данкинг 6.3.2010, 20:29 |
dopdf - он даже бесплатный. При печати сохраняет в .pdf. |
| Автор: Нитонисе 7.3.2010, 00:31 |
Установил эту программу, но результат тот же. Скорее всего дело не в установленном либо неустановленном принтере. А у вас такой код работает? |
| Автор: Данкинг 7.3.2010, 19:50 |
| А если вместо константы (wdOrientLandscape) подставить её значение = 1 ? |
| Автор: Нитонисе 7.3.2010, 20:52 | ||
Та же самая ошибка. А попробуйте у себя этот мой код? Там всего четыре строчки, я их повесил на обработчик нажатия кнопки. У вас такая ошибка будет? И может кто подскажет вариант разворота листа через OLE-технологию? |
| Автор: Данкинг 7.3.2010, 21:30 |
| Попробовал. Ошибок не выдаёт, но и не разворачивает. |
| Автор: Нитонисе 7.3.2010, 23:30 |
Странно. А как запустить ворд, открыть новый документ и повернуть лист в нем напрямую через OLE, а не через компоненты? |
| Автор: Данкинг 7.3.2010, 23:40 | ||
Я на Билдере этого никогда не делал, только на Дельфи, но уверен на 99% что на форуме работа с Word'ом из Билдере где-нибудь да описывалась. |
| Автор: Нитонисе 7.3.2010, 23:53 | ||
|
| Автор: Данкинг 8.3.2010, 00:07 | ||
Так аналогично: создаёшь OLE-объект и задаёшь ему нечто вроде
|
| Автор: Нитонисе 8.3.2010, 00:41 |
Не, напрямую с OLE сам не разберусь... все же хотелось бы через компоненты. Что ж тут не так-то... Плохо что документации нету нигде по этим компонентам. |
| Автор: Нитонисе 8.3.2010, 23:55 | ||
Попробовал через напрямую через OLE подключиться к ворду и повернуть в нем лист
Последняя строчка кода не выполняется. Ошибка с сообщением - "вызов был отклонен". Как переписать эту строчку, чтобы она работала? |
| Автор: Usper 9.3.2010, 09:34 | ||
Параметры страницы нужно устанавливать не для документа, а для таблицы:
И обратите внимание, что для альбомного режима параметру ориентация нужно присвоить значение 2, а не 1. |
| Автор: Нитонисе 9.3.2010, 12:09 | ||
|
| Автор: Usper 9.3.2010, 12:39 |
| Ой |
| Автор: Нитонисе 9.3.2010, 12:43 | ||
ОС - XP SP 2 Word 2002. У тебя мой код работает без ошибок и поворачивает лист? |
| Автор: Данкинг 9.3.2010, 12:44 |
| Нитонисе, а в самом Ворде параметры страницы (альбомный вид т.е.) нормально выставляются, без ошибок? Бывает ещё, что "офис" тупит. |
| Автор: Нитонисе 9.3.2010, 12:51 | ||||
В самом ворде все работает. Вот так выглядит макрос.
Все больше склоняюсь к тому чтобы поставить себе ворд 2007. Уже бы давно поставил, мне в нем не нравится цвет черного шрифта на белом фоне страницы - он какой-то размытый, глаза устают. А в этом ворде - четкий. |
| Автор: Usper 9.3.2010, 14:44 |
Да, так и есть. Прежде чем переходить на другую версия офиса я советую проверить его работоспособность с уже существующем кодом. Я уже сталкивался с тем, что одна и та же моя программа нормально работает с Excel 97-2003, но начинает глючить с Excel 2007. При том, что макросы, генерируемые для выполнения нужных действий, одинаковы для разных версий Excel. Нужные мне действия просто не выполняются без сообщений об ошибке со стороны 2007 версии Excel :(. |
| Автор: Нитонисе 9.3.2010, 19:57 | ||
А проверьте этот код
Все то же самое, только через компоненты билдера. У меня был установлен Office XP, переустановил на Office 2003, а потом и на Office 2007 - везде одна и та же ошибка. |
| Автор: sawfish 10.3.2010, 06:59 |
| У меня Ваш код работает. Но разворот выполняется с задержкой около 10 сек. XP Pro SP2 Word 2003 SP1 |
| Автор: Usper 10.3.2010, 09:01 |
| Аналогично, оба варианта работают, Win XP SP2 + Office 2003 и Office 2007. |
| Автор: Нитонисе 10.3.2010, 10:23 |
| Интересно. У меня через OLE-технологию все так же не работает, а вот через компоненты срабатывает, но только если выставить свойство компонента WordApplication1->ConnectKind = ckRunningOrNew. У этого свойства есть недостаток - при закрытия моей программы закрываются и все открытые вордовские документы. Мне более удобно WordApplication1->ConnectKind = ckNewInstance. При установке этого свойства закрываются только те вордовские документы, которые были открыты из моей программы. Тоже не очень удобно, но как сделать чтобы ворд не закрывался вместе с закрытием моей программы - не придумал. Добавлено через 14 минут и 50 секунд Посмотрите эту тестовую программку по развороту листа. В каких режимах работает, а в каких нет? |
| Автор: Usper 10.3.2010, 11:20 |
| Все три варианта нормально сработали. |
| Автор: Нитонисе 18.3.2010, 21:40 | ||
Вот какая штука получается. Оказывается метод разворота листа компонентами и у меня работает
Этот метод не хочет работать только с первым листом ворда, который создается. Со вторым и всеми последующими - работает. У других все нормально работает и с первым листом, очевидно что это проблема моего ворда. Вот какая у него есть особенность - когда я запускаю его из своей программы и создаю первый лист, то он создается, но при этом выскакивает вот такая ошибка http://www.radikal.ru второй и все последующие листы создаются без этой ошибки. Точно такая же ошибка выскакивает когда я открываю ворд и из других программ от других разработчиков, значит дело не в программных приемах, а в самом ворде. В чем может быть дело? Что э это за ошибка такая, которая мне не позволяет развернуть первый создаваемый лист ворда? Создавать два листа, использовать для отчета второй, а первый потом удалять - очень уж кривое решение для создания отчета. |
| Автор: borisbn 19.3.2010, 07:35 | ||
Нитонисе, по поводу "неверно указана единица измерения" - попробуй в начале программы ( например, в конструкторе главной формы ) написать
|
| Автор: chaos 19.3.2010, 07:42 |
| удалено |
| Автор: Usper 19.3.2010, 08:44 |
| Нитонисе, тут уже надо смотреть Ваш код, может быть никакой ошибки и нет. В ворде параметры страницы могут применяться как ко всему документу, так и к текущему разделу. Я пользуюсь этой особенностью когда мне необходимо только часть листов из документа повернуть. Хотя если не работает код из поста от 9.3.2010, 19:57... Как вариант ещё может быть какой-то косяк в шаблоне Normal, который используются по-умолчанию со всеми документами. Попробуйте создать документ своей программой и потом просмотреть непечатаемые знаки в документе. |
| Автор: Нитонисе 19.3.2010, 12:21 | ||||||
У меня точка установлена в системе как разделитель целой и дробной части. Странно что такая ошибка выскакивает только при создании первого документа. При этом она почти ни на что не влияет, вот разве что мешает этот самый первый лист развернуть в альбомный.
Да код простой - те самый четыре строчки, создающих сервер Word и открывающих там документ, который затем нужно развернуть. Так дело то в том, что скорее всего дело не в коде, потому что точно такая же ошибка с неверной единицей измерения появляется если ворд запустить из какой-нибудь другой программы. Вот у меня есть программа с базой данных документов. Все документы в вордовском формате. Когда я запускаю какой-либо документ - появляется эта ошибка. Но второй и все последующие документы запускаются из этой программы уже без ошибки.
Это как это посмотреть непечатаемые знаки? |
| Автор: Usper 19.3.2010, 12:44 | ||
Поставьте галку "все" и смотрите есть ли в документе "Разрыв раздела" или что-то подобное. |
| Автор: Нитонисе 19.3.2010, 14:39 | ||
Ну вот, у меня появился только такой символ http://www.radikal.ru |
| Автор: Usper 19.3.2010, 16:13 |
| Это нормальное состояние нового документа. Значит дело не в разделах документа. Попробуйте переустановить офис. |
| Автор: Нитонисе 19.3.2010, 16:15 | ||
Так пробовал. Был установлен Office XP, потом установил Office 2003, потом Office2007, потом снова Office2003. Всегда одно и то же. |
| Автор: Usper 19.3.2010, 21:48 |
| Остаётся радикальный метод - переустановка системы. Хотя для начала лучше проверить всё это в виртуальной машине, Virtual Box'е, например. |
| Автор: Нитонисе 19.3.2010, 22:31 |
Да я сколько помню у меня всегда в офисе такая ошибка выскакивала. Раньше просто она не напрягала, а сейчас вон оно как - лист не дает повренуть |
| Автор: 6pahan6 20.3.2010, 02:57 |
| http://letitbit.net/download/7701.ebc7039d4a5db91e6a75898c8/286.part2.rar.html http://letitbit.net/download/9765.9fe2b31983e3caf3fc94fb8a8/286.part1.rar.html вот две ссылки, там выложены видосы, которые помогут в изучении С++, желаю удачи в изучении... |