Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2009, 15:03   #1
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию копирование листов из закрытых книг

Мне очень нужно макросом скопировать содержимое одного листа одной книги на другой лист другой книги. Причем книга-источник будет закрыта. Имена книг и листов будут известны заранее.
Как мне это по-красивее осуществить?
mephist вне форума Ответить с цитированием
Старый 10.07.2009, 16:17   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Если скопировать требуется только значения - можно реализовать, и не открывая книгу.

На мой взгляд, проще всё-таки с открытием:
Код:
Sub test()
    Application.ScreenUpdating = False
    Filename = "C:\Documents and Settings\Игорь\Рабочий стол\Sample__29-06-2009__18-22-17.xls"
    With Workbooks.Open(Filename, , True)
        ' .Worksheets(1).Copy ThisWorkbook.Worksheets(1) ' добавляем лист в текущую книгу
        .Worksheets(1).Cells.Copy ThisWorkbook.Worksheets(1).[a1] ' копируем содержимое листа
        .Close False
    End With
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 10.07.2009, 16:46   #3
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Отлично! Спасибо большое! Вот можно только один вопрос, но зато очень принципиалньный для меня: можно обойтись без прописывания полного пути файла?
Код:
C:\Documents and Settings\Игорь\Рабочий стол\Sample__29-06-2009__18-22-17.xls"
Оба файла у меня лежат в одной папке. Правда папка может перемещаться и из-за этого путь тоже изменится.
mephist вне форума Ответить с цитированием
Старый 10.07.2009, 16:55   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    Application.ScreenUpdating = False
    Filename = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Sample__29-06-2009__18-22-17.xls")
    With Workbooks.Open(Filename, , True)
        .Worksheets(1).Cells.Copy ThisWorkbook.Worksheets(1).[a1]    ' копируем содержимое листа
        .Close False
    End With
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 10.07.2009, 17:18   #5
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Громадное спасибо! Правда! Большое спасибо! Теперь я решу множество проблем с которыми сижу уже несколько дней! Respect EducatedFool!!!
mephist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение книг и листов по имени листа MaxxVer Microsoft Office Excel 8 14.01.2011 13:09
Подборка книг Mikhail Bakurov Свободное общение 2 01.02.2009 05:51
Свод из разных книг RUBEY Microsoft Office Excel 5 23.08.2008 13:25
Поиск книг по .NET Fire.id Общие вопросы .NET 5 11.04.2008 21:17