Страницы: 1
RSS
Сохранение пользовательских настроек макроса в книге Excel
 
Для работы макроса иногда требуются параметры, которые не должны показываться пользователю.  
Я например, создаю на рабочей книги именованные ячейки, а текст этих ячеек выбираю в цвет фона, поэтому этот текст не виден на экране и на печати.  
 
Какие есть еще способы сохранения этих параметров в самой книге, так, чтобы пользователь не смог их непреднамеренно испортить?
 
Скрывать лист пробовали?
Учимся сами и помогаем другим...
 
Пробовал, просто хочется узнать обо всех доступных вариантах. Я слышал, что можно параметры сохранять в свойствах книги там, где, например, указывается дата создания и прочее.
 
Эти свойства видны всем насколько я понимаю
Учимся сами и помогаем другим...
 
{quote}{login=}{date=13.08.2012 09:25}{thema=Сохранение пользовательских настроек макроса в книге Excel}{post}чтобы пользователь не смог их непреднамеренно испортить?{/post}{/quote}  
а свойства книги пользователь может и поменять. непреднамеренно :)  
 
зачем вам "все доступные варианты"? вариант со скрытым листом - один из самых простых и удобных. не нравится скрытый - сделайте очень скрытый, чтобы пользователь даже через диалог "отобразить листы" этот лист не видел.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Есть много вариантов для сохранения параметров книги:  
- в именах (CTRL+F3);  
- в пользовательских свойствах книги (читайте про CustomDocumentProperties);  
- в реестре наконец (SaveSetting, DeleteSetting);
Редко но метко ...
 
Про имена можно поподробнеей.
 
можно сделать надстройку - при сохранении макроса в формат надстройки экселя создается книга с 3 листами, которые скрыты от пользователя, в эти листы я записываю шаблоны или параметры для запуска макроса.  
public sub macro_param()  
x = inputbox("введите параметр")  
workbooks("addin.xlam").worksheets("лист1").Range("A1") = x  
call macros(x) '  
end sub  
после записи параметра в макросе  
public sub macros()  
x = workbooks("addin.xlam").worksheets("лист1").Range("A1")  
msgbox "" & x  
end sub
 
RE: "Про имена можно поподробнеей."  
При открытии книги считываете информацию из нужных имен, при закрытии - записываете. Используйте коллекцию Names. При необходимости имена можно скрыть от пользователя.
Редко но метко ...
 
Нашел как правильно использовать имена, например.  
Dim x As Variant  
x = 3.14  
Names.Add Name:="Store", RefersTo:=x
 
Для сохранения значений в скрытых именах книги можно использовать следующие функции (чтение и запись значений):   
http://excelvba.ru/code/hiddennames
 
Спасибо. Посмотрел код и возник вопрос, зачем нужна эта строчка?  
NewValue = "%%%" & NewValue & "%%%"
 
Точно уже не помню, зачем, но без этого не получится сохранить ЛЮБОЕ текстовое значение в качестве свойства RefersTo  
(вообще-то, это свойство предназначено для хранения ссылки на диапазон,  
поэтому при записи некоторых значений может возникать ошибка)
Страницы: 1
Читают тему
Наверх