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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 23:02   #1
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию Копирование листов из закрытой книги

Не получается никак скопировать лист из закрытой книги в открытую. Код приведен ниже

Код:
Dim xl As New Excel.Application
...   
   xl.Visible = False
   xl.Workbooks.Open (fpath + fname)
   Workbooks(fname).Activate
   xl.Sheets(shname).Copy Before:=Workbooks(myfile).Sheets(1)
...
Попробывал отследить что происходит, оказывается запускается второй Excel (как отдельный процесс) в нем открывается книга fname (из которой копируем), из этого Excel не видно книгу myfile (отрыта в 1 Excel, куда надо скопировать лист)
Подскажите что нужно подправить, чет вообще никак не могу сообразить, наверно, мало опыту, только вот недавно начал изучать VB
Есть вопросы, пишите в ЛС.

Последний раз редактировалось rubius2008; 02.02.2011 в 23:16.
rubius2008 вне форума Ответить с цитированием
Старый 02.02.2011, 23:15   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

А так:
Код:
...   
   
   Workbooks.Open (fpath + fname)
   Workbooks(fname).Activate
   Sheets(shname).Copy Before:=Workbooks(myfile).Sheets(1)
Не надо открывать второй Эксель, делайте всё в одном. А чтоб не мельтешило, отключайте обновление экрана (Application.ScreenUpdating = False), или можно скрыть Application.Visible = False (потом назад верните)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 02.02.2011 в 23:18.
Hugo121 вне форума Ответить с цитированием
Старый 02.02.2011, 23:23   #3
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
А так:
Код:
...   
   
   Workbooks.Open (fpath + fname)
   Workbooks(fname).Activate
   Sheets(shname).Copy Before:=Workbooks(myfile).Sheets(1)
Не надо открывать второй Эксель, делайте всё в одном. А чтоб не мельтешило, отключайте обновление экрана (Application.ScreenUpdating = False), или можно скрыть Application.Visible = False (потом назад верните)
ага, спс работает) будем двигаться дальше...
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 05.02.2011, 22:13   #4
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

В продолжение копирования листов. Копирую листы из книги в них есть проименованные ячейки. Excel для каждой такой ячейки выдает "Перемещаемая или копируемая формула или лист содержит имя "имя ячейки"..." Как избавиться от этого сообщения.
нашел что может помочь
Код:
On Error Resume Next
добавил..
В 2010(2007) Excel - все норм, в 2003 сообщение все также вылазит. Подскажите как от него избавиться?
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 05.02.2011, 22:17   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
В 2010(2007) Excel - все норм, в 2003 сообщение все также вылазит. Подскажите как от него избавиться?
Код:
application.DisplayAlerts=false
' код
application.DisplayAlerts=true
EducatedFool вне форума Ответить с цитированием
Старый 05.02.2011, 22:26   #6
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Код:
application.DisplayAlerts=false
' код
application.DisplayAlerts=true
Спс, робит.
А можете подсказать почему мой вариант не сработал?
Код:
On Error Resume Next
Я смотрел значение Err.Number, и оно было отлично от 0.
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 05.02.2011, 22:44   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А можете подсказать почему мой вариант не сработал?
Это сообщение - не ошибка, а предупреждение.
Т.е., чтобы от него избавиться, надо отключать вывод предупреждений (application.DisplayAlerts), а включать обход ошибок On Error Resume Next
EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные из закрытой книги. Подправить макрос maragva Microsoft Office Excel 0 30.01.2011 14:51
копирование одного и того же набор ячеек со всеx существующиx листов на 1ый лист книги skapitan Microsoft Office Excel 6 25.03.2010 20:40
копирование данных из закрытой книги в открытую mars56 Microsoft Office Excel 5 17.02.2010 11:29
СУММЕСЛИ из закрытой книги Sha Microsoft Office Excel 1 16.12.2009 17:09
Копирование из закрытой книги Maxx Microsoft Office Excel 11 11.08.2009 10:39