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

Вход

Регистрация

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

 

= Мир MS Excel/Закрыть книгу и сразу же её открыть - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закрыть книгу и сразу же её открыть (Макросы/Sub)
Закрыть книгу и сразу же её открыть
Yar4i4 Дата: Вторник, 28.03.2017, 15:04 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Добрый день дамы и господа :D
Когда запускаю макрос с панели быстрого доступа Excel, то обычно вместе с рабочей Книгой открывается и Книга содержащая макросы.
Итого после проигрывания макроса мы имеем открытыми две книги, и что печально Книга с макросами лежит выше и её приходится сворачивать/закрывать.
В этой теме _Boroda_ в Сообщение № 17 предложил код, который закрывает и сразу же открывает Книгу.
Я его попытался вырвать и применить для общих нужд, но лучшим из результатов стало закрытие всех Книг и открытие Книги содержащей макросы. Выделял и .Activate и .Select результата не получил.
[vba]
Код
Workbooks.Application.DisplayAlerts = False 'без лишних слов
Excel.ActiveWorkbook.Save 'просто сохраним
With ActiveWorkbook 'надеюсь, что активна рабочая Книга
fn_ = .Name 'присваиваю активной Книге переменную
Application.Quit 'закроем всё
Workbooks.Open (fn_) 'откроем через переменную
End With
[/vba] этот код ругается на то, что не может найти рабочую книгу.
К сообщению приложен файл: 2982672.xlsx (7.9 Kb) · 3313239.xlsm (11.1 Kb)


Сообщение отредактировал Yar4i4 - Вторник, 28.03.2017, 15:05
 
Ответить
СообщениеДобрый день дамы и господа :D
Когда запускаю макрос с панели быстрого доступа Excel, то обычно вместе с рабочей Книгой открывается и Книга содержащая макросы.
Итого после проигрывания макроса мы имеем открытыми две книги, и что печально Книга с макросами лежит выше и её приходится сворачивать/закрывать.
В этой теме _Boroda_ в Сообщение № 17 предложил код, который закрывает и сразу же открывает Книгу.
Я его попытался вырвать и применить для общих нужд, но лучшим из результатов стало закрытие всех Книг и открытие Книги содержащей макросы. Выделял и .Activate и .Select результата не получил.
[vba]
Код
Workbooks.Application.DisplayAlerts = False 'без лишних слов
Excel.ActiveWorkbook.Save 'просто сохраним
With ActiveWorkbook 'надеюсь, что активна рабочая Книга
fn_ = .Name 'присваиваю активной Книге переменную
Application.Quit 'закроем всё
Workbooks.Open (fn_) 'откроем через переменную
End With
[/vba] этот код ругается на то, что не может найти рабочую книгу.

Автор - Yar4i4
Дата добавления - 28.03.2017 в 15:04
_Boroda_ Дата: Вторник, 28.03.2017, 15:16 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Правильно. У меня что в той теме в коде написано?
            fp_ = .Path & Application.PathSeparator & fn1_ & ".xlsx"
'...
            Workbooks.Open (fp_)

fp_ равно путь & имя ? расширение
А у Вас что написано?
Что у Вас в переменной fn_ ?
И вообще не совсем ясно в чем Ваш вопрос-то заключается? Что в итоге получить нужно?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПравильно. У меня что в той теме в коде написано?
            fp_ = .Path & Application.PathSeparator & fn1_ & ".xlsx"
'...
            Workbooks.Open (fp_)

fp_ равно путь & имя ? расширение
А у Вас что написано?
Что у Вас в переменной fn_ ?
И вообще не совсем ясно в чем Ваш вопрос-то заключается? Что в итоге получить нужно?

Автор - _Boroda_
Дата добавления - 28.03.2017 в 15:16
Yar4i4 Дата: Вторник, 28.03.2017, 15:38 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Что в итоге получить нужно?

Нужно чтобы из двух открытых Книг (Рабочая и С макросами) закрылись обе, и сразу же открылась Рабочая.
В одной из вариаций у меня получилось, но открылась не рабочая (как хочу), а Книга с макросами.


Сообщение отредактировал Yar4i4 - Вторник, 28.03.2017, 15:43
 
Ответить
Сообщение
Что в итоге получить нужно?

Нужно чтобы из двух открытых Книг (Рабочая и С макросами) закрылись обе, и сразу же открылась Рабочая.
В одной из вариаций у меня получилось, но открылась не рабочая (как хочу), а Книга с макросами.

Автор - Yar4i4
Дата добавления - 28.03.2017 в 15:38
_Boroda_ Дата: Вторник, 28.03.2017, 16:11 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Тогда см. сообщение выше - там как раз про открытие. А закрывать Вы уже умеете


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТогда см. сообщение выше - там как раз про открытие. А закрывать Вы уже умеете

Автор - _Boroda_
Дата добавления - 28.03.2017 в 16:11
Yar4i4 Дата: Вторник, 28.03.2017, 16:17 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Имя я присвоил и путь прописал - он находит рабочую Книгу
[vba]
Код
fn_ = .Name
fp_ = .Path & "\" & fn_
[/vba]
 
Ответить
СообщениеИмя я присвоил и путь прописал - он находит рабочую Книгу
[vba]
Код
fn_ = .Name
fp_ = .Path & "\" & fn_
[/vba]

Автор - Yar4i4
Дата добавления - 28.03.2017 в 16:17
Yar4i4 Дата: Вторник, 28.03.2017, 16:23 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Вышло))
Спасибо
[vba]
Код
Workbooks.Application.DisplayAlerts = False 'без лишних слов
Excel.ActiveWorkbook.Save 'просто сохраним
With ActiveWorkbook 'надеюсь, что активна рабочая Книга
fn_ = .Name 'присваиваю активной Книге переменную
fp_ = .Path & "\" & fn_
.Close
Workbooks.Open (fp_) 'откроем через переменную
End With
[/vba]

Один раз правильно последующие нет...


Сообщение отредактировал Yar4i4 - Вторник, 28.03.2017, 16:28
 
Ответить
СообщениеВышло))
Спасибо
[vba]
Код
Workbooks.Application.DisplayAlerts = False 'без лишних слов
Excel.ActiveWorkbook.Save 'просто сохраним
With ActiveWorkbook 'надеюсь, что активна рабочая Книга
fn_ = .Name 'присваиваю активной Книге переменную
fp_ = .Path & "\" & fn_
.Close
Workbooks.Open (fp_) 'откроем через переменную
End With
[/vba]

Один раз правильно последующие нет...

Автор - Yar4i4
Дата добавления - 28.03.2017 в 16:23
_Boroda_ Дата: Вторник, 28.03.2017, 16:26 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А какую он еще должен найти, если выше у Вас написано
With ActiveWorkbook

? Все, что между Wuth и End With и при этом с точкой вначале - относится к тому, что написано после With
Поэтому в
fn_ = .Name
у Вас имя активной книги.
Вам же нужно не активной, а какой-то другой. Вот и присвойте переменной fn_ имя нужной книги. А потом открывайте.
Кстати, про путь аналогично логика должна быть


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА какую он еще должен найти, если выше у Вас написано
With ActiveWorkbook

? Все, что между Wuth и End With и при этом с точкой вначале - относится к тому, что написано после With
Поэтому в
fn_ = .Name
у Вас имя активной книги.
Вам же нужно не активной, а какой-то другой. Вот и присвойте переменной fn_ имя нужной книги. А потом открывайте.
Кстати, про путь аналогично логика должна быть

Автор - _Boroda_
Дата добавления - 28.03.2017 в 16:26
Yar4i4 Дата: Вторник, 28.03.2017, 17:05 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Не учел статичный путь и статичное имя у файла с макросами. Всё вышло. Может не так красиво и может длиннее положенного, но работает. Спасибо Вам.
[vba]
Код
With ActiveWorkbook 'надеюсь, что активна рабочая Книга
fn_ = .Name 'присваиваю активной Книге переменную
fp_ = .Path & "\" & fn_
Application.DisplayAlerts = 0
.SaveAs Filename:=fp_, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = 1
.Close
Workbooks.Open (fp_) 'откроем через переменную
End With
Workbooks("Макрос").Close
[/vba]

***
Ошибка Excel "Нет доступ к Рабочей Книге" выскакивает - лечится нажатием на "ОК" или
[vba]
Код
...End With
Workbooks.Application.DisplayAlerts = False 'без лишних слов
Workbooks("Макрос").Close...
[/vba]
***
Немного расскажу почему необходимо было закрыть Рабочую Книгу, а потом сразу же открыть. Дело в том, что не удавалось скопировать лист с третьей (сторонней) Книги без закрытия и открытия ("переоткрытия") Рабочей Книги. Рабочая Книга - являлась продуктом экспорта из сторонней программы и была подвержена лишь сохранению на Диске D компьютера (т.е. абсолютно новая Книга), но этого было не достаточно для импорта в неё листов из третьих (сторонних) Книг. О схожем явлении _Boroda_ говорил в вышеупомянутой теме, но о Книге доноре, здесь же потребовалось и Книгу источник "переоткрывать".
Хорошего дня Вам дамы и господа :D


Сообщение отредактировал Yar4i4 - Среда, 29.03.2017, 09:53
 
Ответить
СообщениеНе учел статичный путь и статичное имя у файла с макросами. Всё вышло. Может не так красиво и может длиннее положенного, но работает. Спасибо Вам.
[vba]
Код
With ActiveWorkbook 'надеюсь, что активна рабочая Книга
fn_ = .Name 'присваиваю активной Книге переменную
fp_ = .Path & "\" & fn_
Application.DisplayAlerts = 0
.SaveAs Filename:=fp_, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = 1
.Close
Workbooks.Open (fp_) 'откроем через переменную
End With
Workbooks("Макрос").Close
[/vba]

***
Ошибка Excel "Нет доступ к Рабочей Книге" выскакивает - лечится нажатием на "ОК" или
[vba]
Код
...End With
Workbooks.Application.DisplayAlerts = False 'без лишних слов
Workbooks("Макрос").Close...
[/vba]
***
Немного расскажу почему необходимо было закрыть Рабочую Книгу, а потом сразу же открыть. Дело в том, что не удавалось скопировать лист с третьей (сторонней) Книги без закрытия и открытия ("переоткрытия") Рабочей Книги. Рабочая Книга - являлась продуктом экспорта из сторонней программы и была подвержена лишь сохранению на Диске D компьютера (т.е. абсолютно новая Книга), но этого было не достаточно для импорта в неё листов из третьих (сторонних) Книг. О схожем явлении _Boroda_ говорил в вышеупомянутой теме, но о Книге доноре, здесь же потребовалось и Книгу источник "переоткрывать".
Хорошего дня Вам дамы и господа :D

Автор - Yar4i4
Дата добавления - 28.03.2017 в 17:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закрыть книгу и сразу же её открыть (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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