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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2009, 11:55   #1
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
Вопрос copy-paste. Оптимизация!

Прошу прощения за детский вопрос:
как в макросе прописать копирование из ячейки одной книги в ячейку другой.
Я написал такой код, но работает он до посинения долго
(этот блок кода повторяется 8 раз, то есть я создаю 16 ссылок, а работает это 7-10 минут ):
Код:
ThisWorkbook.Worksheets(1).Unprotect
    Application.ScreenUpdating = False
    Filename = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "3 sz.xlsx")
    With Workbooks.Open(Filename, , True)
        ActiveWorkbook.Worksheets(1).Unprotect
        Range("C8").Copy ThisWorkbook.Worksheets(1).[C8]
        Range("D8").Copy ThisWorkbook.Worksheets(1).[D8]
        .Close False
    End With
Подскажите, где я ошибся? А вообще здесь есть логические ошибки, и можно ли это оптимизировать?
mephist вне форума Ответить с цитированием
Старый 14.07.2009, 07:08   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А Вам нужно именно копию ячейки? Т.е. со всеми свойствами (шрифт, формат, заливка, границы и т.п.)?
Если достаточно только значения, то файл-источник можно не открывать. Скорее всего "тормозит" именно открытие/закрытие файлов.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 14.07.2009, 15:02   #3
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Да. Мне нужно только значение. Как можно это сделать?
mephist вне форума Ответить с цитированием
Старый 15.07.2009, 05:02   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Получить значение ячейки из неоткрытой книги можно лишь в том случае, если известно имя листа и адрес ячейки этой книги, т.к. указывать нужно явно. По номеру листа обратиться невозможно. Например, пусть в Вашем случае, лист с данными (WorkSheets(1) в закрытой книге-источнике) имеет имя "Лист1". Тогда можно применить следующее:
Код:
Application.ScreenUpdating = False
With ThisWorkbook.Sheets(1)
    .Unprotect
    .[C8].Formula = "='" & ThisWorkbook.Path & "\[3 sz.xlsx]Лист1'!$C$8": .[C8].Value = .[C8].Value
    .[D8].Formula = "='" & ThisWorkbook.Path & "\[3 sz.xlsx]Лист1'!$D$8": .[D8].Value = .[D8].Value
End With
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
черные пиксели на изображении при Paste из Clipboard NieL Мультимедиа в Delphi 3 30.04.2009 15:55
Copy и строка Pedro Общие вопросы Delphi 3 07.02.2009 17:46
pos и copy zotox Помощь студентам 1 23.10.2008 21:13
Copy File Witaliy Общие вопросы Delphi 4 26.07.2008 13:20
Облом Copy&Paste SHEI'TI Microsoft Office Word 2 24.09.2007 14:16