Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Закрыть файл по названию

Автор lovko, 13.03.2015, 06:40

« назад - далее »

lovko

Здравствуйте! Подскажите, пожалуйста, как сделать следующее:
Необходимо макросом в файле А закрыть другой файл, название которого, скажем "Б.xlsm", указано в ячейке А15 Листа1 файла А. При этом закрываемый файл должен сохраняться.
Пробовал такие варианты (ничего не работает):
Sub WorkBooksList()
Dim book As Object
For Each book In Workbooks
[Лист1!A15] = book.Name
Next
End Sub


Это макрос вносит в ячейку Лист1!A15 файла "А" название другого открытого файла.
Вот как я пытался его закрыть:
Windows([Лист1!A15]).Activate
ActiveWorkbook.Save
ActiveWindow.Close


или

Workbooks([Лист1!A15]).Save
Workbooks([Лист1!A15]).Close (SaveChanges)


или

Workbooks.Close Filename:=[Лист1!A15]


Спасибо за помощь!

Serge 007

Цитата: lovko от 13.03.2015, 06:40...макросом в файле А закрыть другой файл, название которого, скажем "Б.xlsm", указано в ячейке А15 Листа1 файла А. При этом закрываемый файл должен сохраняться...

Здравствуйте

Sub lovko()
    Dim Book As String
    Book = ThisWorkbook.Sheets("лист2").Range("a1")
    Workbooks(Book).Close savechanges:=True
End Sub
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

lovko

Подскажите, пожалуйста: после вашего макроса мне следом нужно выполнить следующий, что я пытался сделать и через Call, и через Application.Run, но у меня ничего не выходит. После того, как выполняется ваша часть макроса, все останавливается - никаких сообщений, просто ничего не происходит. Почему так?

Serge 007

У меня все работает. Тестировал так:
Sub lovko()
    Dim Book As String
    Book = ThisWorkbook.Sheets("лист2").Range("a1")
    Workbooks(Book).Close savechanges:=True
    Hard_Macro
End Sub

Sub Hard_Macro()
    Dim i As Long
        i = 1
        i = i + i
        MsgBox (i)
End Sub


А почему не работает у Вас - сказать не могу, Вы не приложили нерабочего файла к посту
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

lovko

Вот пример моей проблемы. Папку "Не работает Call" с файлами "A" и "B" нужно поместить на диск C компьютера.
Спасибо за то, что помогаете!

lovko


Serge 007

Тут я :)

См вложение, так надо?
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

lovko

Сильно надо, чтобы один макрос был связан с другим методом Call или подобным.