|
|
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
У меня из базы информация определенным образом группируется и поступает в документ Word. Все работает в принципе нормально. Делаю я все ч/з объектную Word - вскую библиотеку. Ну т.е . завожу объекты типа word.application and word.document. Все работает. Но стоит мне закрыть Word и повторить перекачку данных в новый документ, дает ошибку пишет что ссылка уже существует. Нажимая Ctrl+Alt+Delete и действительно вижу , Word торчит Но я в конце процедуры использую очистку объектных переменных с помощью Nothing . В чем же дело? Видать не доходит до места с Nothing. Как уничтожить ссылку?\ (кстати это все в windows 98). Вот впрочем кусок кода. Dim wrd As Word.Application Set wrd = CreateObject("word.application") With wrd .Documents.Add With ActiveDocument.PageSetup .LineNumbering.Active = False .Orientation = wdOrientLandscape .TopMargin = CentimetersToPoints(1) .BottomMargin = CentimetersToPoints(1) .LeftMargin = CentimetersToPoints(0.3) .RightMargin = CentimetersToPoints(0.3) .Gutter = CentimetersToPoints(0) .HeaderDistance = CentimetersToPoints(1.25) .FooterDistance = CentimetersToPoints(1.25) .PageWidth = CentimetersToPoints(29.7) .PageHeight = CentimetersToPoints(21) .FirstPageTray = wdPrinterDefaultBin .OtherPagesTray = wdPrinterDefaultBin .SectionStart = wdSectionNewPage .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .VerticalAlignment = wdAlignVerticalTop .SuppressEndnotes = False .MirrorMargins = False End With If ActiveWindow.View.SplitSpecial <> wdPaneNone Then ActiveWindow.Panes(2).Close End If If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _ ActivePane.View.Type = wdOutlineView Or ActiveWindow.ActivePane.View.Type _ = wdMasterView Then ActiveWindow.ActivePane.View.Type = wdPageView End If With ActiveDocument.PageSetup.TextColumns .SetCount NumColumns:=3 .EvenlySpaced = True .LineBetween = False .Width = CentimetersToPoints(8.87) .Spacing = CentimetersToPoints(1.25) End With ..... потом идут действия где я используя DAO . Recordset - отбираю записи и пихаю в документ активный. И в конце вот очищаю ссылки ..... Set wrd = Nothing Set rs1 = Nothing Set rs2 = Nothing Set rs3 = Nothing Set rs4 = Nothing В Access ссылка на библиотеку word стоит. Помогите с вопросом , ребята! Кто возился с автоматизацией Access & Word? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:20 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
Word еще и Закрывать надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:23 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
ИМХО: торчит не указатель (та самая ссылка, но указатель мне приятнее), а объект, который ты создал при помощи этого указателя. В конце ты просто очищаешь сам указатель. Он указывает в Великое ничто. Но объет то остался! Но вот как его закрыть - не заню :) f1 в word help VBA и какой-нить Close или Terminate. ХЗ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:24 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
Мда. Обпозднел. Senin Viktor уже все гораздо понятнее объяснил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:25 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
2 Senin Viktor Так ведь закрываю Word , а по тройному нажатию он все равно виден! 2 Темный Спасибо. Просветил! И как же этот объект убить, почему он не уничтожается когда я Word закрываю? Что этот объект из себя представляет? Word.Application? Ведь именно его я создаю через CreateObject . Он, да он. Как его уничтожить то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:31 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
В свете полученной информации перефразирую вопрос. Как убить не ссылку , а объект Word ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:35 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
что-то похожее у меня было с Excel я делал ему .quit но он всё равно висел в процесах. народ посоветовал делать не только set myexcel=nothing но и nothing ко все объектам типа sheets может Вам стоит делать nothing не только к word.application а так же и к documents? с ув. наутилус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:40 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
2Eternal >Так ведь закрываю Word , а по тройному нажатию он все равно виден! найди мне в твоем коде строку wrd.Quit, а заодно и ActiveDocument.Сlose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:40 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
теперь АпАздАл я ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:41 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
Виктор! Надо чтобы Access cформировал word -вский документ и оставил его на экране.Юзер сам его сохранит и закроет . Но он закрывает его, а Word все равно висит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 15:52 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
>Надо чтобы Access cформировал word -вский документ и оставил его на экране.Юзер сам его сохранит и закроет . Но он закрывает его, а Word все равно висит! Ну вот по-тихоньку все и обрисововаеться. У меня точно такая же ситуация для Екцеля - работает на ура. Могу только рекомендовать отказать от ActiveDocument в пользу явной ссылки на объект типа Word.Document, которую потом и делать Nothing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 16:02 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Т.е создаем приложением Word.Application и потом добавляем word.Document . Так , а потом шлепаем ссылку именно на word.document . Теперь бы вспомнить как сделать явную ссылку на документ Может здесь имется ввиду физически создать документ на винте, а потом его открыть? Или как? Знатоки word - вской объектной библиотеки как назло наверное водку пьют. Или кто знает? Виктор спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 16:10 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
>Надо чтобы Access cформировал word -вский документ и оставил его на экране.Юзер сам его сохранит и закроет . Но он закрывает его, а Word все равно висит! Виктор! У тебя чудеса! на очень многих машинах зависает или "недопустимку творит" при таком раскладе Eternal! Вот выход: создавай документ (можно так, чтобы юзер и не видел процесс - прячь окно ворда) потом программно закрывай его и сам ворд (сначала save, затем quit или что там - с кучей doevents между ними кстати) и все ссылки по окончании убивай А после этого ОТКРЫВАЙ свежесозданный документ для работы юзера командой типа Shell("start " & "тут полный путь к файлу", видокнаоткрытия) - и никаких проблем не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 16:28 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
2Alexus12 >Виктор! У тебя чудеса! на очень многих машинах зависает или "недопустимку творит" при таком раскладе Ну чудеса, конечно, были - только не долго :) Вот примерно так для екцеля строится работа Код: 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. Очищаем переменные согласно их "иерархии": сперва PageSetup и Лист, затем книга, затем сам екцел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 17:05 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
Спасибо за выкладки. Но пользователь сам хочет сохранять документ , где ему в голову взбредет. Если бы этого было не нужно, а нужно было создавать готовый документ на винте, я бы думаю проблему решил бы. Ты подскажи именно как выпутаться с условием , что уже открыт Word и добавлен документ, в него "слиты" и сгруппированы записи из БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 17:07 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
>Но пользователь сам хочет сохранять документ strFilePath="С:\Хде та на белом свете\й.xls" wbResult.SaveAs FileName:=strFilePath >Ты подскажи именно как выпутаться с условием , что уже открыт Word Тогда ссылку можно получить на Ворд через GetObject >и добавлен документ, в него "слиты" и сгруппированы записи из БД. Тогда надо просто получить ссылку на этот уже открытый документ и делать с этим документом все, что душе угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 17:16 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 17:20 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
>Тогда надо просто получить ссылку на этот уже открытый документ и делать с этим документом все, что душе угодно. Виктор! Во во во! Это и нужно! Только вот как это "замочить" то? Как получить ссылку на открытый документ? Эта ссылка ведь Access создается? Им же и надо убить? Когда Word обычным образом закрываю, он не торчит же скрыто! А эта черт её дери автоматизация все переворачивает Вечером из дома зайду в интернет и посмотрю. А сейчас надо домой. Виктор еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 17:22 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
To [Eternal] проблема в непоказанном куске, который обозначен как ..... потом идут действия где я используя DAO . Recordset - отбираю записи и пихаю в документ активный. И в конце вот очищаю ссылки ..... Существо проблемы приблизительно вот в чем - в какой-то момент запускается ВТОРАЯ КОПИЯ Worda, причем документ в скрытом виде остается висеть, или документ в нем может быть даже закрыт, а эекземпляр остался. Надо найти кто это делает. Советы. -2) что там за платформа и нет ли антивирусов каких, если есть, переходи к -1), иначе к 0) -1) (сервиспаки) 0) По завершении своей могучей процедуры запусти Word нормально, "обычным способом". В пункте меню окно посмотри, что творится со списком документов. Может быть все СРАЗУ поймешь 1) В своем коде, в первую очередь, ищи куски, организующие слияние, или пользущие WordApp.Run С Уважением, Виктоша ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 18:53 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
Сижу вожусь уже дома. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 18:55 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
насколько я помню, решил такую проблему отказом от присвоения объектной переменной самого приложения. То есть объявляешь Dim doc As Word.Document а дальше работаешь с ним. Если же нужно добраться до приложения, используешь doc.Application (Надеюсь, вспомнил правильно, потому что времени на поиски нет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 19:00 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
>Но пользователь сам хочет сохранять документ , где ему в голову взбредет. Если бы этого было не нужно, а нужно было создавать готовый документ на винте, я бы думаю проблему решил бы. Родной! А как гаран-консультант-прочие щастья работают, выводя документ в ворд? ПИШУТ ВРЕМЕННЫЙ ФАЙЛ КУДА сами программы ХОТЯТ (обычно хотят в win/temp) а потом открывают его оттеда как я сказал (через API - то же самое будет) - и юзер уже сохраняет куда хочет. Зачэм велосепед изобретать и с зависонами описанными мучиться?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2004, 19:02 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
Я понял тебя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 10:50 |
|
||
|
Автоматизация. Как убить ссылку которая торчит в памяти?
|
|||
|---|---|---|---|
|
#18+
У тебя скорей всего что-то напутано с ссылками. Вот накатал примерчик: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. - появляется Word с новым документом, пользователь с ним спокойно работает, потом закрывает и ни одного Word больше в памяти не остается... Проверь повнимательнее все свои ссылки, если ты WordApp обнулишь, а Document оставишь, то система Word не отпустит и он будет висеть. Отдельный разговор, если ты сам хочешь закрыть Word (программно), тоды надо одними Nothing не обойдешься, тут надо принудительно вызвать WordApp.Save [SaveChanges], а потом уже Nothing и тогда по идее все закроется, правда народ говорит, что на некоторых конфигурациях он иногда все таки забывает закрыться, но это уже глюки, с ними боряться в Microsoft :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2004, 12:52 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32374236&tid=1677248]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 497ms |

| 0 / 0 |
