Страницы: 1
RSS
Параметры листа макросом
 
Доброго времени суток, уважаемые форумчане. Давно не обращался за помощью на наш уважаемый форум, как-то получалось самому решать текущие вопросы, но все-таки вопрос появился. Самое главное, вопрос пока чисто теоретический. Итак, ситуация такова: пользователь теоретически может "испортить" лист документа (удалить формулы и текст, изменить высоту и ширину строк и т.д.). Для решения этой гипотетической ситуации сейчас в документе присутствуют резервные листы на основании которых макросом восстанавливаются "испорченные". А теперь наконец вопрос. Можно макросом создать лист и прописать все необходимые данные (формулы, текст в нужных ячейках со всеми параметрами шрифта, параметры строк и колонок и т.д.) А вот можно ли и как сделать это (получить необходимые данные) макросом? Т.е. оформленный лист "просканировать" и получить в итоге все данные об этом листе. А для восстановления листа использовать следующий алгоритм: создать лист и вставить данные из БД (где-то описанной) о его параметрах. Вопрос, повторюсь, чисто теоретический, нет значит нет, останется прежний вариант и все.
Заранее спасибо всем откликнувшимся.
 
есть такой инструмент в Excel
Код
Sub SheetCopy
  Worksheets(1).copy After:= Worksheets(Worksheets.count)
End Sub
в конце книги создан слепок с листа 1 со всеми формулами, ячейками, строками, колонками, текстами, форматами, шрифтами, раскрасками, границами  и все остальное
Поздравляю! задача решена
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Уважаемый Игорь, я имел ввиду другое (возможно объяснил кривовато). В принципе, то что вы описали, уже реализовано (созданы копии листов, соответствующе переименованы и скрыты, а макросом восстанавливаются). Но (чисто теоретически) ведь этот скрытый лист может быть случайно удален пользователем (разумеется можно применить защиту), да и объем книги (если таких "резервных" листов штук 10-15) увеличится, а в моем предполагаемом варианте это ведь не так? Разумеется никто не  мешает мне прописать все что мне надо вручную, но ведь это долго и нудно, пропустить можно что-либо, вот я и задумал поручить описание макросу ;)  
 
Цитата
написал:
пользователь теоретически может "испортить" лист документа (удалить формулы и текст, изменить высоту и ширину строк и т.д.).
А если этот документ сохранить в качестве шаблона? Сможет ли пользователь его испортить?
 
отлично!
вы сначала продумываете как должно выглядеть это описание
потом излагаете свои идеи
а потом подумайте, что помешает пользователю, способному удалить ваши скрытые листы в этом или в других, заархивированных паролями файлах, файле (все это ерунда)
так вот, что ему помешает удалить ваше описание?
в результате вы конкретно натрахаетесь с описание и его реализацией, а пользователь одним мизинцем все это снесет, и останетесь вы с дыркой от бублика и без описания, с массой прое...ного на реализацию времени, но безусловно в активе будет полученный опыт)))
и еще подумайте найдется-ли энтузиаст заниматься бесполезными описаниями, когда копирование листа - это практически одна строка кода. если вам это интересно - занимайтесь, а мое участие в этом проекте заканчивается на этом сообщении)
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Уважаемый Игорь, так ведь я еще в первом посте указал что это чисто теоретический вопрос и то, что абсолютно ничего страшного нет, если идея не имеет приемлемо простого решения. Нет значит нет. ничего страшного. Разумеется пользователь может и описание снести, тут вы правы, этот мой аргумент слабым получился, ну тогда остается размер файла. Спасибо за отклик даже на не самую умную идею :oops:  
 
OlegO, Фактически вы хотите куда-то перенести то , что хранится в виде XML о конкретном листе, но с тем различием что этот XML заполняется постепено с каждым измененийм в диапазоне, а вот сканирование листа с проверкой десятков параметров, которые могут описывать формат, на мой взгляд весьма трудоемко, хотя в целом возможно, но в результате вы должны получить массив с набором полей, таких как диапазон, параметр, значение.
По вопросам из тем форума, личку не читаю.
 
То, что можно создать лист с нужным форматированием каждой ячейки на всем листе понятно, что это возможно
Доже возможно где-то сохранить текст в зашифрованном виде..
Но мне кажется, что автор задал вопрос типа создать макрос, которому можно подсунуть любой шаблон и макрос сможет сгенерировать код, который сможет сгенерировать процедуру форматирования листа....
Фув!
Типа сформировать код формирования файла по образцу!
ИМХО
моё сугубо личное мнениее
Изменено: Александр Моторин - 17.05.2022 21:49:59
 
Ну коли к нашему посту присоединились еще гуру, рискну продолжить тему :oops: . Вот пример чуть обработанного макроса, созданного макрорекодером:    
Код
With Range("A1")
        .Font.Name = "Times New Roman"
        .Font.Size = 14
        .FormulaR1C1 = "ïðîáà"
End With
    Columns("B:B").ColumnWidth = 2.57
    Range("B2").Borders(xlEdgeBottom).LineStyle = xlContinuous
    Rows("2:2").RowHeight = 9

Примерно это я и хочу увидеть и, после создания листа и его переименования, указать подобные данные по типу ВПР (для каждого листа свое описание). Я немного неточно описал свою задумку, имел ввиду конечно только рабочую (при страничном варианте отображения) часть листа. Пусть макрос (как мне кажется) в цикле переберет все ячейки рабочей области и опишет все что можно касающееся данных ячеек, а я впоследствии "причешу" код. Вот примерно так реально сделать, можно ли получить все нужные данные об ячейке макросом и, если возможно, как указать в цикле границы РАБОЧЕЙ области?

 
Activesheet.UsedRange
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, у меня получается (пробовал так: x = ActiveSheet.UsedRange) во-первых информация только о содержимом ячейки, а во-вторых эта информация находится в массиве:
x(1,1) = "проба"
x(1,2) = empty
x(2,1) = empty
x(2,2) = empty
Получается, что (если решить вопрос недостатка данных придется в макросу обрабатывать массив циклом, так?
 
не получается что?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, так можно ли и как получить больше данных (формат ячеек и т.п.) и как потом эти полученные данные превратить в нечто похожее из поста №9?  
 
Цитата
OlegO: можно ли получить необходимые данные макросом?
да. Перебирайте ячейки и собирайте с них всю информацию: данные, формулы, границы, размер, объединения, параметры шрифта и так далее — охренительно большой список). Потом добавьте информацию в целом о листе: УФ, ярлык, защита и куча других параметров. И всё  :)

Цитата
OlegO: как сделать это?
вряд ли кто-то даже за деньги будет этим заниматься, учитывая очевидную бесперспективность затеи
Изменено: Jack Famous - 18.05.2022 18:16:22
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
учитывая очевидную бесперспективность затеи
Прислушаюсь к мнению профи, спасибо
 
можно было крепко задуматься уже после прочтения #5)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх