Всем Мяу! Создаем экземпляр Word, поработали, все скопировали, в Excel вставили, осталось малое - убить Word. [vba]
Код
Sub t() Set wa = CreateObject("Word.Application") ' скопировали , вставили... ' осталось закрыть Word On Error GoTo 0 ' wa.CutCopyMode = False wa.DisplayAlerts = False wa.Quit wa.DisplayAlerts = True Set wa = Nothing
End Sub
[/vba] А не тут то и было. Word убиваться не желает. И ошибки нет, и Word не закрывается. При попытке закрыть ручками, кричит, что в буфере большой объем данных, и не оставить ли их там? Где собака порылась? Другой час ничего придумать не могу... кросс
Всем Мяу! Создаем экземпляр Word, поработали, все скопировали, в Excel вставили, осталось малое - убить Word. [vba]
Код
Sub t() Set wa = CreateObject("Word.Application") ' скопировали , вставили... ' осталось закрыть Word On Error GoTo 0 ' wa.CutCopyMode = False wa.DisplayAlerts = False wa.Quit wa.DisplayAlerts = True Set wa = Nothing
End Sub
[/vba] А не тут то и было. Word убиваться не желает. И ошибки нет, и Word не закрывается. При попытке закрыть ручками, кричит, что в буфере большой объем данных, и не оставить ли их там? Где собака порылась? Другой час ничего придумать не могу... кроссRAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Понедельник, 13.10.2014, 17:58
С помощью .Quit приложение Word закрывается и .DisplayAlerts может недоумевать, чего от него хотят с приложением, которого нет. Может стоит .DisplayAlerts убрать? Тогда документ будет закрыт без сохранения. Если же хочется сохраниться - .Save & .SaveAs в помощь.
Привет.
С помощью .Quit приложение Word закрывается и .DisplayAlerts может недоумевать, чего от него хотят с приложением, которого нет. Может стоит .DisplayAlerts убрать? Тогда документ будет закрыт без сохранения. Если же хочется сохраниться - .Save & .SaveAs в помощь.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Как вариант, ЗДЕСЬ пишут, что при использовании в коде другого приложения могут создаваться связи через простое присвоение значений типа: [Что-то в Excel] = [Что-то в Word] Лечится поздним связыванием и, для профилактики, стоит использовать Option Explicit.
Как вариант, ЗДЕСЬ пишут, что при использовании в коде другого приложения могут создаваться связи через простое присвоение значений типа: [Что-то в Excel] = [Что-то в Word] Лечится поздним связыванием и, для профилактики, стоит использовать Option Explicit.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Кстати, ключевой вопрос. У тебя в References - VBAProject подключено что-то похожее на Microsoft Word 14.0 Object Library?
Возможно не в тему: нашёл такой макрос. Если библиотека выше подключена - убивает все ворды на компе.
[vba]
Код
Public Sub Kill_all_Words()
Dim oWord As Word.Application
Do Set oWord = GetObject(Class:="Word.Application") If Not oWord Is Nothing Then oWord.Quit False Set oWord = Nothing End If Loop Until oWord Is Nothing
End Sub
[/vba]
UPD: Стоп, про связывание я попутал, это GETOBJECT у нас раннее.
UPD2: По ссылке на планету вижу пустую страницу. Может корпоративная политика не пускает.
Кстати, ключевой вопрос. У тебя в References - VBAProject подключено что-то похожее на Microsoft Word 14.0 Object Library?
Возможно не в тему: нашёл такой макрос. Если библиотека выше подключена - убивает все ворды на компе.
[vba]
Код
Public Sub Kill_all_Words()
Dim oWord As Word.Application
Do Set oWord = GetObject(Class:="Word.Application") If Not oWord Is Nothing Then oWord.Quit False Set oWord = Nothing End If Loop Until oWord Is Nothing
End Sub
[/vba]
UPD: Стоп, про связывание я попутал, это GETOBJECT у нас раннее.
UPD2: По ссылке на планету вижу пустую страницу. Может корпоративная политика не пускает.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Понедельник, 13.10.2014, 18:54
[/vba] не вяжется. GetObject - это позднее связывание с существующим экземпляром. Поэтому наличие ссылки на библиотеку здесь совершенно не нужно и oWord можно объявить как Object. Разницы никакой не будет(кроме косяков с разными версиями Word при раннем связывании).
P.S. Кстати очень часто находил подобные ляпы даже среди обучающих статей ВУЗов. Делали ссылку на библиотеку Word и применяли позднее связывание.
[vba]
Код
Dim oWord As Word.Application
[/vba] и [vba]
Код
GetObject(Class:="Word.Application")
[/vba] не вяжется. GetObject - это позднее связывание с существующим экземпляром. Поэтому наличие ссылки на библиотеку здесь совершенно не нужно и oWord можно объявить как Object. Разницы никакой не будет(кроме косяков с разными версиями Word при раннем связывании).
P.S. Кстати очень часто находил подобные ляпы даже среди обучающих статей ВУЗов. Делали ссылку на библиотеку Word и применяли позднее связывание.The_Prist
Errare humanum est, stultum est in errore perseverare