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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 14:21   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Копировать весь лист

Для создания резервной копии нужно скопировать содержание всего листа. При этом нужно как содержание, так и оформление (размер ячеек, цвет, формулы, выпадающие списки и т.п.). Делаю это так:
Код:
    With ТаблицаКудаКопируем
        ОткудаКопируем.Cells.Copy   'Берем в буфер обмена.
        .Paste               'Вставляем из буфера.
    End With
Все копируется без проблем. Для контроля вызываю функцию несколько раз подряд - все хорошо. Работаю дальше. Через некоторое время снова запускаю функцию и получаю ошибку: 1004. Данные не могут быть вставлены из-за несоответствия формы и размера области копирования и области вставки.
Содержание обоих листов не менялось.
Как решить проблему?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 12.01.2012, 14:25   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Если копировать надо все, так и копируйте лист. Зачем эти танцы с ячейками?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.01.2012, 14:51   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Если копировать надо все, так и копируйте лист. Зачем эти танцы с ячейками?
Нужно не просто копировать в лист, а в лист с определенным именем. Упрощенно выглядит так.

ЛистИмя=здесь составляем нужное имя.
if Лист(ЛистИмя)=есть then используем его.
else создаем Лист(ЛистИмя) и используем его.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 12.01.2012, 15:08   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Упрощенно выглядит несколько иначе

Код:
ЛистИмя=здесь составляем нужное имя. 
if Лист(ЛистИмя)=есть then удаляем его нафиг )
Копируем лист , присваиваем ему имя ЛистИмя).
EducatedFool вне форума Ответить с цитированием
Старый 12.01.2012, 15:33   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Упрощенно выглядит несколько иначе

Код:
ЛистИмя=здесь составляем нужное имя. 
if Лист(ЛистИмя)=есть then удаляем его нафиг )
Копируем лист , присваиваем ему имя ЛистИмя).
Так можно поступить с копией, но мне нужно провести так же обратное копирование. В котором я не могу уже удалять лист, там вообще нет проверки на наличие листа.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 12.01.2012, 15:52   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

tae1980, Вас никто не заставляет прислушиваться к советам. Делайте по-своему.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.01.2012, 16:24   #7
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
tae1980, Вас никто не заставляет прислушиваться к советам. Делайте по-своему.
Я только поясняю ситуацию. И уже попробовал все предложения.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 12.01.2012, 17:48   #8
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Восстанавливать данные я решил таким способом
Код:
        ЛистИмяКодовое = Участки.CodeName
        ActiveWorkbook.Worksheets(ЛистИмя).Copy After:=Участки
        Индекс = Участки.Index
        Application.DisplayAlerts = False                      'Отключем запрос на подтверждение удаления.
        Участки.Delete
        ActiveWorkbook.VBProject.VBComponents(Sheets(Индекс).CodeName).name = ЛистИмяКодовое
        Sheets(Индекс).name = "Участки"
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать лист Excel из одной книги в другую через Delphi. S_Yevgeniy Общие вопросы Delphi 1 24.10.2011 15:55
Копировать текст из webbrowser в memo (включить ctrl+c ctrl+v) копировать - вставить Alar Работа с сетью в Delphi 13 12.07.2010 18:16
Выбор из столбца по критерию и копировать ячейку из этой строки на другой лист Тетя Мотя Microsoft Office Excel 1 17.09.2009 16:46
Копировать данные из разных ячеек по нескольким листам в один лист Dorvir Microsoft Office Excel 2 11.06.2008 10:10
Копировать лист и задать имя Leanna Microsoft Office Excel 5 19.02.2008 16:40