|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Два вопроса: 1) Как заполнить документ Word, находящийся в поле OLE и сохранить там же 2) Как заполнить документ Word, находящийся в поле OLE без отображения окна Word т.е. чтобы пользователю не был виден сам процесс заполнения Ниже привожу пример как это делал я через Присоединенную рамку объекта. В комментариях описаны проблемные места. Может быть есть другой способ заполнить документ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2010, 18:07 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
О элемента "рамка объекта" есть св-во Object, через которое можно получить ссылку объектную модель документа. Т.е. вместо: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2010, 20:17 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Да, строка Set oDoc = oBOF.Object позволяет обратится к документу без его отркытия. Спасибо, Анатолий! Было замечено также, что строка oDoc.Save делает вид документа Обычный хотя он был Разметка страницы Но всё ещё остаётся вопрос с сохранением измененного документа! Ведь изменения происходят только в копии документа, который лежит в Присоединенной рамке объекта. А нужно сохранить эти изменения в таблице 'Документы' Пробовал различные варианты типа: Код: plaintext
Код: plaintext
но и документ не сохраняется Помогите, кто знает как решить эту задачу! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 11:21 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
George RuПробовал различные варианты типа: Код: plaintext
Код: plaintext
но и документ не сохраняется А где, собственно, RSt.Edit и RSt.Update? Попутно... Если вы открыли RSt на нужном документе, то зачем следом вызываете DLookup для той же цели? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 11:43 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Выложу обновлённый код, чтоб легче разбираться было. DLookup убрал. Здесь Документ заполняется без открытия, но остается изменённой только его копия в Присоединенной рамке объекта. Нужно сохранить эту копию в таблице 'Документы' В коде выделено место, где она хочет сохраниться, но у неё не получается :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 11:57 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
George Ru, может сначала закрыть, а потом сохранить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 12:35 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАGeorge Ru, может сначала закрыть, а потом сохранить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Нет, не помогло. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 12:55 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Нарыл в справке, вот небольшая вырезка: Справка Microsoft Visual Basic Field Object ............................................................ Remarks ............................................................ In both Microsoft Jet and ODBCDirect workspaces, you manipulate a field using a Field object and its methods and properties. For example, you can: ............................................................ Use the Value property of a field in a Recordset object to set or return stored data. Use the AppendChunk and GetChunk methods and the FieldSize property to get or set a value in an OLE Object or Memo field of a Recordset object. ............................................................ Кто-нибудь знаком с методом AppendChunk ? Может быть мне его надо использовать? Хотя я уже попробовал строку: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 13:08 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
George Ru, Я пытаюсь понять весь топик, но у меня не получается, вот возьмём первый вопрос, схема обычно такая: 1. Загружаем документ в базу (поле OLE) 2. Открываем его для редактирования с формы, на которой есть это поле и которая имеет источником данных таблицу (запрос) с этим полем. 3. Редактируем его. 4. При выходе из Word сохраняем. Всё. Таким образом, если вы хотите что-то автоматизировать, то нужно в Word'е сделать кнопку с макросом, макрос должен быть внешний, и нажимать её при открытии. Вообще непонятна мысль редакции давно готового и подписанного договора. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 13:21 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
alvkGeorge Ru, Я пытаюсь понять весь топик, но у меня не получается, вот возьмём первый вопрос, схема обычно такая: 1. Загружаем документ в базу (поле OLE) Не нужно ничего загружать, документ уже загружен. alvk2. Открываем его для редактирования с формы, на которой есть это поле и которая имеет источником данных таблицу (запрос) с этим полем. alvk, не нужно открывать Word, точнее, даже, нужно чтобы Word не открывался. Этот вопрос уже решён, благодаря Анатолию. Источником данных таблицу не ставлю, потому что это не один документ, их много, но все они привязаны к одному договору. Здесь, для упрощения, приведена только часть данных. alvk3. Редактируем его. Редактироваться он должен автоматически, путём заполнения данными из базы. Этот вопрос тоже уже решён. alvk4. При выходе из Word сохраняем. Всё. Вот именно, осталось только сохранить проделанную работу с документом. alvk, Вы можете чем-то помочь в этом вопросе? alvkТаким образом, если вы хотите что-то автоматизировать, то нужно в Word'е сделать кнопку с макросом, макрос должен быть внешний, и нажимать её при открытии. Не нужно никаких кнопок в Word'е. Word вообще не будет открываться. alvk Вообще непонятна мысль редакции давно готового и подписанного договора. С чего Вы взяли, что договор готов и подписан? Если нужна более полная картина задачи, опишу её для Вас кратко: Код: plaintext 1. 2. 3. 4.
Или скажите, по существу, как можно сохранить данные, ведь, на самом деле, вопрос остался только в этом, остальное уже решено. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 14:50 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
George Ru, я же написал, что пытаюсь понять... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 14:58 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Заметил одну особенность: если разделить эту процедуру на две кнопки и в первой сделать заполнение данными документа в oBOF - потом руками открыть документ в этой рамке во второй сделать привязку записи к RSt то документ обновляется. Т.е. что-то происходит при открытии документа вручную, какое-то обновление oBOF, наверное. Осталось выяснить что и записать это в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 15:23 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Кажется, получилось. Сейчас приведу в порядок и выложу здесь конечный результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 15:39 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Ну вот, всё готово! Теперь можно спокойно заполнить документ данными из базы, даже не открывая его. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2010, 16:54 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Народ, не подскажите а как всё-таки Word каким-нибудь образом в отчёт Access прикреплять? Какое поле OLE надо будет вставить и как? Я в панеле элементов А2003 не могу найти. Знаю, что в Word можно вставить Excel таблицу. Стало быть и в отчёте Access скорее всего можно вставить как Word, так и Excel. Но как это делается не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 08:57 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Access Beginner, авторНарод, не подскажите а как всё-таки Word каким-нибудь образом в отчёт Access прикреплять? В отчёте же можно поставить рамку объекта. И связать её с OLE полем, в котором лежит Word объект. Во всяком случае Excel объекты так можно печатать. То есть можно разместить Excel объект (OLE поле) прямо в отчёте Акссес. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 10:20 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Access BeginnerНарод, не подскажите а как всё-таки Word каким-нибудь образом в отчёт Access прикреплять? Какое поле OLE надо будет вставить и как? Я в панеле элементов А2003 не могу найти. Знаю, что в Word можно вставить Excel таблицу. Стало быть и в отчёте Access скорее всего можно вставить как Word, так и Excel. Но как это делается не знаю. увы, получаю подобные отчеты через формирование ворд-документа в формате НТМ напрямую документ ворда неопределенного количества листов вставить сначала не смогла, а затем освоила НТМ и больше не ломала зря голову ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 10:49 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Попробуйте создать Отчёт с помощью Мастера на основе Таблицы содержащей поле OLE . Может быть это Вам поможет разобраться. Только когда будете помещать документ Word в поле, не надо ставить галочку В виде значка , иначе и в отчёте тоже будет значёк , а не содержимое . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 10:54 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
George RuПопробуйте создать Отчёт с помощью Мастера на основе Таблицы содержащей поле OLE . Может быть это Вам поможет разобраться. Только когда будете помещать документ Word в поле, не надо ставить галочку В виде значка , иначе и в отчёте тоже будет значёк , а не содержимое . вставила ворд-док на 3 листа, контрол -3см без возможности расширения на печати и получаю 3 см первого листа при любом положении галочки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 11:01 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАвставила ворд-док на 3 листа, контрол -3см без возможности расширения на печати и получаю 3 см первого листа при любом положении галочки Это верно. Содержимое документа ограничивается размером рамки. Такой способ вывода можно применить, только если документ помещается в эту рамку. Можно ещё поиграться со свойством рамки 'Установка размеров', но это сильно не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 11:18 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
George RuПЕНСИОНЕРКАвставила ворд-док на 3 листа, контрол -3см без возможности расширения на печати и получаю 3 см первого листа при любом положении галочки Это верно. Содержимое документа ограничивается размером рамки. Такой способ вывода можно применить, только если документ помещается в эту рамку. Можно ещё поиграться со свойством рамки 'Установка размеров', но это сильно не поможет. У Вас разве не получается формировать отчёт Word в Access с произвольным количеством страниц? Прочитав Ваш топик я подумал, что у Вас всё получается. Или у Вас был договор на 1 лист? Интересно можно ли добавить хоть 5 OLE объекта, каждый из которых будет показывать отдельно взятый лист Word отчёта? В смысле сам отчёт состоит скажем из 5 листов. 1-OLE показывает 1-лист, а 2 соответственно 2-лист и т.д. Если заранее известно точное количество страниц отчёта. С другой стороны можно было бы 5 Word файл состряпать и впихать в таблицу с полем OLE. Но тут есть проблема: если маленький кусок из 1-файла не втиснулся и должен был перейти на 2-лист, то по моему отчёт будет "слегка проблемным". У кого-нибудь есть "светлая идея". Мне не нужно плодить Word файл, желательно сделать единственный шаблончик, ну а потом заменять программно только некоторые значения перед распечаткой отчёта. В принципе идея с 5 OLE меня устраивает, да только проблема с авторасширением надо будет как-то решить. Пока не знаю как. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 12:25 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Access Beginner, авторУ кого-нибудь есть "светлая идея". Мне не нужно плодить Word файл, желательно сделать единственный шаблончик, ну а потом заменять программно только некоторые значения перед распечаткой отчёта. В принципе идея с 5 OLE меня устраивает, да только проблема с авторасширением надо будет как-то решить. Пока не знаю как. при формирование ворд-док в формате НТМ(при наличии таблиц или сложной формы) я вообще не использую шаблоны, для простой формы -шаблон и не нужен - достаточно OLE-автоматизации я имею несколько функций для формирования -стандартных шапок -стандартных подписей -стандартная программа для печати произвольного списка по запросу(чистый список или перекрестный запрос без групповых итогов) -типовая для этих же целей, но с итогами -итоги в произвольном порядке(клиент-товар-период, период-клиент-товар и .........) по пожеланию пользователя -формирование отчета для слабовидящих с выбором размера шрифта, но стандартной печатью в ворде более мелким шрифтом -альбомная-книжная печать с выбором а3-а4 -корректный перенос заголовков групп-данных-примечаний не реализованы(не очень то и надо было 2-5 отчетов сделала средствами аксесса) -итоги по каждому листу -рисунок в шапку -пока не требовался -очень длинные подписи не должны отрываться от итогов и последней рядовой строки(был один случай - не стала доводить до чистового решения, полу-ручной вариант с мини инструкцией пользователю применение -просмотр в броузере -для начальства и слабовидящих -печать в ворде -автоподгонка листа по ширине для отчетов до 30листов(табличных) и до 200 гладких -доработка и печать в екселе более длинных отчетов ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 13:17 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
Access Beginner, Если речь идёт про шаблончик, то нафига тогда OLE? Сделайте шаблончик и открывайте его когда надо, хоть черех shell, хоть через выгрузку в Word. Вы же хотите только распечатать, а не хранить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 13:42 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, Вы примерчик какой-нибудь выложили бы! А то над бедными начинающими как издевательство: "А вот я это умею, то умею, но тебе не дам!!!". А если вы в этом деле "собаку съели", то написали бы что-то вроде FAQ, вообще цены бы не было!!! Уверен, что многих это заинтересует (если конечно при этом комментарии есть). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 13:52 |
|
Как сохранить измененный документ Word в поле OLE
|
|||
---|---|---|---|
#18+
alvkAccess Beginner, Если речь идёт про шаблончик, то нафига тогда OLE? Сделайте шаблончик и открывайте его когда надо, хоть черех shell, хоть через выгрузку в Word. Вы же хотите только распечатать, а не хранить? Т.е. программно открыть файл, изменить, распечатать, а потом закрыть и при этом не сохранить. А такой тогда вопрос: если одновременно по сети 2 и более пользователя откроют один и тот же файл, то не будет никакого конфликта? Сейчас попробую у себя поэкспериментировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2010, 13:57 |
|
|
start [/forum/topic.php?fid=45&msg=37004715&tid=1610150]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 444ms |
0 / 0 |