Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Закрыть Word после копирования - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закрыть Word после копирования (Макросы/Sub)
Закрыть Word после копирования
RAN Дата: Понедельник, 13.10.2014, 17:52 | Сообщение № 1
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Всем Мяу!
Создаем экземпляр 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 - Понедельник, 13.10.2014, 17:58
 
Ответить
СообщениеВсем Мяу!
Создаем экземпляр 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
Дата добавления - 13.10.2014 в 17:52
Rioran Дата: Понедельник, 13.10.2014, 18:04 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Привет.

С помощью .Quit приложение Word закрывается и .DisplayAlerts может недоумевать, чего от него хотят с приложением, которого нет. Может стоит .DisplayAlerts убрать? Тогда документ будет закрыт без сохранения. Если же хочется сохраниться - .Save & .SaveAs в помощь.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеПривет.

С помощью .Quit приложение Word закрывается и .DisplayAlerts может недоумевать, чего от него хотят с приложением, которого нет. Может стоит .DisplayAlerts убрать? Тогда документ будет закрыт без сохранения. Если же хочется сохраниться - .Save & .SaveAs в помощь.

Автор - Rioran
Дата добавления - 13.10.2014 в 18:04
RAN Дата: Понедельник, 13.10.2014, 18:13 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Тогда документ будет закрыт без сохранения.

Документ уже давно закрыт.
в цикле
[vba]
Код
Application.CutCopyMode = False
             wd.Close False
             Set wd = Nothing
[/vba]
Не будет. В том и проблема.
.DisplayAlerts я на пробу в разных вариациях впихнул уже после того, как...


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 13.10.2014, 18:15
 
Ответить
Сообщение
Тогда документ будет закрыт без сохранения.

Документ уже давно закрыт.
в цикле
[vba]
Код
Application.CutCopyMode = False
             wd.Close False
             Set wd = Nothing
[/vba]
Не будет. В том и проблема.
.DisplayAlerts я на пробу в разных вариациях впихнул уже после того, как...

Автор - RAN
Дата добавления - 13.10.2014 в 18:13
Rioran Дата: Понедельник, 13.10.2014, 18:37 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Как вариант, ЗДЕСЬ пишут, что при использовании в коде другого приложения могут создаваться связи через простое присвоение значений типа: [Что-то в Excel] = [Что-то в Word] Лечится поздним связыванием и, для профилактики, стоит использовать Option Explicit.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеКак вариант, ЗДЕСЬ пишут, что при использовании в коде другого приложения могут создаваться связи через простое присвоение значений типа: [Что-то в Excel] = [Что-то в Word] Лечится поздним связыванием и, для профилактики, стоит использовать Option Explicit.

Автор - Rioran
Дата добавления - 13.10.2014 в 18:37
RAN Дата: Понедельник, 13.10.2014, 18:48 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Лечится поздним связыванием

А это что?
[vba]
Код
Set wa = CreateObject("Word.Application")
[/vba]
Полный (почти) код на Планете.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Лечится поздним связыванием

А это что?
[vba]
Код
Set wa = CreateObject("Word.Application")
[/vba]
Полный (почти) код на Планете.

Автор - RAN
Дата добавления - 13.10.2014 в 18:48
Rioran Дата: Понедельник, 13.10.2014, 18:49 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Кстати, ключевой вопрос. У тебя в 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: По ссылке на планету вижу пустую страницу. Может корпоративная политика не пускает.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 13.10.2014, 18:54
 
Ответить
СообщениеКстати, ключевой вопрос. У тебя в 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
Дата добавления - 13.10.2014 в 18:49
RAN Дата: Понедельник, 13.10.2014, 18:54 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Уряяя!
[vba]
Код
  wa.Quit False
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеУряяя!
[vba]
Код
  wa.Quit False
[/vba]

Автор - RAN
Дата добавления - 13.10.2014 в 18:54
The_Prist Дата: Понедельник, 13.10.2014, 18:58 | Сообщение № 8
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
[vba]
Код
Dim oWord As Word.Application
[/vba]
и
[vba]
Код
GetObject(Class:="Word.Application")
[/vba]
не вяжется. GetObject - это позднее связывание с существующим экземпляром. Поэтому наличие ссылки на библиотеку здесь совершенно не нужно и oWord можно объявить как Object. Разницы никакой не будет(кроме косяков с разными версиями Word при раннем связывании).

P.S. Кстати очень часто находил подобные ляпы даже среди обучающих статей ВУЗов. Делали ссылку на библиотеку Word и применяли позднее связывание.


Errare humanum est, stultum est in errore perseverare
 
Ответить
Сообщение[vba]
Код
Dim oWord As Word.Application
[/vba]
и
[vba]
Код
GetObject(Class:="Word.Application")
[/vba]
не вяжется. GetObject - это позднее связывание с существующим экземпляром. Поэтому наличие ссылки на библиотеку здесь совершенно не нужно и oWord можно объявить как Object. Разницы никакой не будет(кроме косяков с разными версиями Word при раннем связывании).

P.S. Кстати очень часто находил подобные ляпы даже среди обучающих статей ВУЗов. Делали ссылку на библиотеку Word и применяли позднее связывание.

Автор - The_Prist
Дата добавления - 13.10.2014 в 18:58
RAN Дата: Понедельник, 13.10.2014, 19:06 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Роман
[vba]
Код
Dim oWord As Word.Application
[/vba]
раннее связывание, требуется подключать библиотеку
[vba]
Код
CreateObject("Word.Application")
GetObject(Class:="Word.Application")
[/vba]
позднее связывание, подключение библиотеки не требуется


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеРоман
[vba]
Код
Dim oWord As Word.Application
[/vba]
раннее связывание, требуется подключать библиотеку
[vba]
Код
CreateObject("Word.Application")
GetObject(Class:="Word.Application")
[/vba]
позднее связывание, подключение библиотеки не требуется

Автор - RAN
Дата добавления - 13.10.2014 в 19:06
Rioran Дата: Понедельник, 13.10.2014, 21:15 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
GetObject - это позднее связывание с существующим экземпляром.

Дмитрий, спасибо, интересно.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 13.10.2014, 21:18
 
Ответить
Сообщение
GetObject - это позднее связывание с существующим экземпляром.

Дмитрий, спасибо, интересно.

Автор - Rioran
Дата добавления - 13.10.2014 в 21:15
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закрыть Word после копирования (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!