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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2018, 23:36   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Коды снятия и установка защиты листа влияют на выполнение кода

Здравствуйте.
Помогите разобраться.
Данный код вставляет скопированные данные в формате «значения и исходное форматирование».
Код:
      If Application.CutCopyMode = 0 Then Exit Sub 'Условие - если вставка не активна, то оператор невыполним
        
        ActiveSheet.Unprotect      'Снять защиту листа
        Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
            , SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveSheet.Protect        'Установить защиту
Код работает безошибочно, но если добавить строки кода, снятия и установки защиты, то начинает выходить ошибка.
«Метод PasteSpecial из класса Range Завершен неверно»
Помогите пожалуйста исправить этот момент ошибки.

Последний раз редактировалось segail; 26.10.2018 в 23:38.
segail вне форума Ответить с цитированием
Старый 27.10.2018, 01:41   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

При выполнении ActiveSheet.Unprotect слетает режим копирования-вставки.
Есть возможность снять защиту ДО копирования?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 27.10.2018, 01:44   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
При выполнении ActiveSheet.Unprotect слетает режим копирования-вставки.
Есть возможность снять защиту ДО копирования?
Нет. Копирование идет с других книг.
Наверно проще разблокировать лист и удалить коды защиты, хотя и нежелательно…

Последний раз редактировалось segail; 27.10.2018 в 01:56.
segail вне форума Ответить с цитированием
Старый 27.10.2018, 02:38   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Если структура книги не защищена, можно в коде создать новый временный лист, вставить на него, снять защиту, перенести с временного листа на целевой, удалить временный лист. В первом приближении
Код:
Sub yy()
Dim shA
If Application.CutCopyMode = 0 Then Exit Sub          'Условие - если вставка не активна, то оператор невыполним
  Set shA = ActiveSheet
  With Worksheets.Add
    Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    shA.Activate
    ActiveSheet.Unprotect                             'Снять защиту листа
    .UsedRange.Copy
    Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Protect                               'Установить защиту
    Application.DisplayAlerts = False
    .Delete
    Application.DisplayAlerts = True
  End With
End Sub
А можно и новую временную книгу создать.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 27.10.2018, 02:41   #5
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Казанский
Тоже вариант, попробую.
Благодарю за помощь.
segail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sleep останавливает выполнение всего в программе а не задерживает выполнение конкретного куска кода? Illusiony Общие вопросы Delphi 19 22.02.2015 18:37
Установка защиты на ячейку. Pasha_Z Microsoft Office Excel 13 09.01.2014 16:32
Снятие защиты листа Кнопка77 Помощь студентам 3 25.06.2013 10:44
Пароль для защиты листа. VicVoodoo Microsoft Office Excel 8 27.09.2012 11:32
Отключение пароля защиты листа кодом. segail Microsoft Office Excel 6 14.12.2009 19:21