Страница: 1 |
Спасибо!!! Страница: 1 |
Вопрос: Остаётся болтаться в памяти MS Word
Добавлено: 07.02.03 14:02
Автор вопроса: Comanche
Вот код модуля:
'
Sub Main()
Dim msWord As Object
Dim fName As String
'
fName = "<полное имя DOC-файла>"
Set msWord = GetObject(fName)
' *****
tplH = msWord.Application.PointsToCentimeters(msWord.PageSetup.pageHeight)
tplH = Int(10 * tplH) ' <<< перевод в ММ и выделение целой части
tplW = msWord.Application.PointsToCentimeters(msWord.PageSetup.pageWidth)
tplW = Int(10 * tplW) ' <<< перевод в ММ и выделение целой части
' *****
msWord.Application.Quit
Set msWord = Nothing
End Sub
'
Если закомментировать 4 строки между звёздочками, то всё нормально. Иначе - в памяти остаётся болтаться "Winword", не взирая на Quit и Nothing.
'
Раннее связывание использовать НЕ МОГУ: должна быть независимость от версии Ворда. Поэтому-то msWord и объявляется как Object, а не как Word.Application.
'
Где грабли?!
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Slay
Вопросов: 27
Ответов: 150
Web-сайт:
Профиль | | #1
Добавлено: 07.02.03 17:37
У меня было нечто похожее... косяки были в функции CentimetrsToPoints (сантиметры*1.35) у тебя используется обратная функция....
Номер ответа: 2
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #2
Добавлено: 07.02.03 17:46
Вроде нашёл способ, но хочу попросить вас его потестировать, если несложно:
я заменил msWord.Application.Quit на следующее:
msWord.Activate
msWord.Close SaveChanges:=False
и "огрызки" в памяти больше не остаются.
PS: Без msWord.Activate оно ругается на msWord.Close - мол, "ничё не вышло, поскольку окно приложения неактивно".
Проверьте, плиз...
Спасибо.
Номер ответа: 3
Автор ответа:
Goul
Вопросов: 0
Ответов: 29
Профиль | | #3
Добавлено: 07.02.03 18:26
В конфигурации WinXP, Office XP работает.
Номер ответа: 4
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #4
Добавлено: 07.02.03 18:33