Страницы: 1
RSS
Макрос копирования защищенного листа
 
Добрый день ув. эксперты.
Работа с формулами закончена.
Не могу сделать макрос. Задача такая при выполнение макроса создается копия листа (Новый Табель) и присваивается ему имя из ячейки Y168 (это сделано макрос в книге)
При этом копируемый лист защищен (пароль 123) после копирования только в новом листе ячейки G180:AK322 должны содержать не формулы а значения и не должны быть защищены.
Везде упираюсь в ввод пароля для снятия защиты как его вводить макросом не знаю. Книга во вложении.
Изменено: vlemeshkin - 03.04.2018 08:28:17
 
vlemeshkin, я же дал Вам в другой теме ссылку - не помогло?
 
Добрый день.
Я не профессионал в командах и т.д. Мои познания в макросе это кнопка записать макрос.
 
Ну так включите макрорекордер и запишите снятие/установку защиты листа.
 
Я так и делал а когда запускаю макрос выходит окно для ввода пароля для снятия защиты с листа.
 
vlemeshkin,
Код
sheets("такой-то").Unprotect "123"
 
Апострофф простите я так понимаю это надо вставить в записанный макрос?
 
Правильно понимаете - это надо вставить перед первым обращением к листу.
Имя листа исправить не забудьте.
 
Скрытый текст

Вот так сделал
Изменено: vlemeshkin - 03.04.2018 07:47:59
 
Ну и?
Получилось?
 
Пробую насколько будет корректно в моем случае задача была чуть сложнее чем пароль ввести
 
Все отлично огромное спасибо
 
Опять проблема.
При проверке работы макроса выяснилось что не все так гладко.
Макрос делал записью. после начала записи.
Делаую копию листа
копирую содержимое ячейки (там формула даты которая отображает начало периода т.е. первое число текущего месяца)
выбираю лист переименовать вставить вставляется дата из ячейки
выбираю пустую ячейку останавливаю запись макроса.
Думал что при запуске макроса будет создаваться копия листа с именем соответствующему дате в ячейке.
на деле имя листа всегда 01.04.2018 но это и так понятно из макроса. Как сделать name = содержимое ячейки
Скрытый текст
 
Цитата
vlemeshkin написал:
содержимое ячейки
какой именно? Вы выделяете их несколько:
Range("Y168:AB168").Select
в общем случае, чтобы Вам было понятно - должно выглядеть так:
Код
Sheets("Новый Табель").Select
    Sheets("Новый Табель").Copy After:=Sheets(1)
    Range("Y168:AB168").Select
    Selection.Copy
    Sheets("Новый Табель (2)").Name = Range("Y168:AB168").Value
но правильнее будет так:
Код
    Sheets("Новый Табель").Copy After:=Sheets(1)
'Sheets(2) т.к. вставляем после первого листа - значит всегда второй
    Sheets(2).Name = Range("Y168").Value
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо пробую
Страницы: 1
Наверх