Страница 1 из 2

Сохранить параметры в форме Excel

Добавлено: 21 июн 2005, 14:48
sergvk
Добрый день!
Есть табличка Excel с формой для ввода данных.
Хочу сохранять в текстовом поле введенное значение, что бы при следующем открытии таблицы это значение оставалось.
Сечас у меня получается "удерживать" значение только пока открыта таблица. При открытии файла в форме в поле стоит значение, указанное при "строительстве" формы.
Может я многого хочу от VBA? - :) ))
Сохранять значения на листе не хотелось бы.

Добавлено: 21 июн 2005, 16:07
pashulka
Как правило в таких случаях дают совет :
а) сохранить значение в ячейках рабочего листа (желательно скрытом)
б) сохранить значения в текстовом файле, и очередной загрузке MSForms(UserForm) считывать их

P.S. sergvk - это сейчас мода такая, каждый новый вопрос оставлять на новом форуме … :lol:

Добавлено: 21 июн 2005, 16:49
sergvk
P.S. sergvk - это сейчас мода такая, каждый новый вопрос оставлять на новом форуме …
просто еще не остановился на определенном форуме - :) )) и потому нахожу форум через поисковик. Так и получается - :) ))

Мне кажется мою "хотелку" можно как то обойти. Ведь стандартные Excel формі (тот же Options) где то хранит - :) ))

Была у меня ситуация... задали бухи мне "задачку" Вот на одном листе смисок (например ведомость на зарплату), а на другом - шаблон формы. Надо курсором выделить нужную строку на листе списка, перейти на лист-шаблон, а там все поля уже заполнились. Спрашивал на нескольких форумах.. ответ -НЕТ - :( (( А на самом деле выкрутился и сделал функцию. Добавил бухам и они меня месяц кофем "упаивали" - :) )) Правдо функцию обнародывать не хочу. Уж больно оно выглядет коряво. - :( ((
Но главное работает - :) ))

Добавлено: 21 июн 2005, 17:15
Игорь Акопян
Реестр?

Добавлено: 21 июн 2005, 17:38
sergvk
.. нЕЕееее зачем такие "дебри" - :)
Свойства событий - :) ) Попутно узнал, что в моем случае сначала віполняется деактивация листа, а потом макрос по событию- :( (
Вот эту "головную" боль и обходил - :) )

Добавлено: 22 июн 2005, 03:58
pashulka
1. Если Вас не устраивают ответы на Ваши вопросы, то почему прямо не сказать об этом, а то уходить по английски … это как-то ... ведь мы же не англичане ... :D
IMHO Лучше всё-таки высказывать своё мнение о появившихся ответах на свой вопрос. Мне вот например, интересно, чем Вас не устроил мой ответ на Исходниках
2. Если говорить о MSForms, то эти элементы управления сами и хранят свои свойства, если можно так выразиться. И в этом легко убедиться если выполнить экспорт UserForm, и "исследовать" два файла .frm .frx
И кстати, где я говорил, что этого сделать нельзя … смотрите вторую часть ответа, связанную с текстовыми файлами.
3. Получить ответ НЕТ можно в различных случаях и не всегда ответ НЕТ подразумевает действительно отрицание, зачастую это просто нежелание людей решать Ваш вопрос.

P.S. Интересно было бы увидеть ссылки на два этих форума [можно в приват]
А ответ Игоря Акопяна на мой взгляд, касался "мест" хранения свойств MSForms, а не Вашей функции.

Добавлено: 22 июн 2005, 11:36
sergvk
1. Если Вас не устраивают ответы на Ваши вопросы, то почему прямо не сказать об этом, а то уходить по английски … это как-то ... ведь мы же не англичане ...
... Прошу меня простить, если я оказался невеждой - :) )
Мое мнение о вопросах таково, что 80% ответа уже в самом вопросе. В моем случает получилось, что я не полностью задал вопрос или описал ситуацию. Сохранение Value єлементов формы на листе - єто решение вопроса, но не совсем удобное. Т.К. приходится "строить" таблички для не достаточно опытных пользователей. В результате возможна ситуация, когда пользователь или удалит или переименует или вообще что то свое "напишет", в общем испортит лист. Тут можно немного застраховаться , используя имена и тогда пользователю можно "немного почудить" на листе. Второй, предложенный Вами вариант - так же решает вопрос., но и так же не удобно. Пользователь может хранить файл где угодно. Сохранить INI-файл в системных каталагах также не решит "проблему", т.к. с файлом пользователь может "уйти" на другой комп. Потому хотелось бы увидеть предложения как обойти эти "неудобства".
IMHO Лучше всё-таки высказывать своё мнение о появившихся ответах на свой вопрос. Мне вот например, интересно, чем Вас не устроил мой ответ на Исходниках
.. ответ устроил. Прошу простить за молчание - :( ( Молчал т.к. решил его сам и больше не "заглядывал" в ту тему.
2. Если говорить о MSForms, то эти элементы управления сами и хранят свои свойства, если можно так выразиться. И в этом легко убедиться если выполнить экспорт UserForm, и "исследовать" два файла .frm .frx
.. да значения остаются, но вопрос в том, что бы после работы пользователя сохранить новые значения.
И кстати, где я говорил, что этого сделать нельзя … смотрите вторую часть ответа, связанную с текстовыми файлами.
.. неудобно. Придется держать пару всегда рядом. - :( (
3. Получить ответ НЕТ можно в различных случаях и не всегда ответ НЕТ подразумевает действительно отрицание, зачастую это просто нежелание людей решать Ваш вопрос.
Мне, кажется, что отвечать "НЕТ" из-за того, что не хочется решать вопрос - не стоит и писать. Тут лучше "мертвое молчание" на вопрос или ответ модера на полнотут постановки вопроса.
P.S. Интересно было бы увидеть ссылки на два этих форума [можно в приват]
Изв. вопрос не понял. - :( ( "Ссылки на ДВА форума" ?
А ответ Игоря Акопяна на мой взгляд, касался "мест" хранения свойств MSForms, а не Вашей функции.
В реестре еще проблемотичнее. Основная проблема - миграция файла.

Добавлено: 22 июн 2005, 12:25
pashulka
1. Честно говоря я сам думаю, что правильно сформулированный вопрос, это уже половина ответа (не всегда конечно), но в 80% что-то слабо верится. С другой стороны, это наверное хорошо, когда существует несколько немного отличающихся видений одного и тоже вопроса.
2. Если пользователи не очень опытные, то всё-таки можно хранить данные в ячейках рабочего листа, но скрытого, т.е. :

Код: Выделить всё

Worksheets(1).Visible = xlVeryHidden ' 2
Сразу оговорюсь, что не настаиваю именно на этом способе решения задачи, а скорее предлагаю его для менее привередливых :P VBA маньяков, т.е. для тех, кто будет читать этот топик в дальнейшем. А если этот файл будет блуждать по различным компьютерам, то единственный разумный вариант месторасположения Ваших данных это сам файл. И здесь есть несколько других вариантов, например использовать свойство .ID об'екта Range (только для MS Excel 2000 and >>>)

3. Что касается ответа НЕТ, то тут я с Вами согласен на все 100% Но это об'ективная реальность и я ничего с этим поделать не могу …
4. Вы писали, что оставляли свой вопрос (на который везде были отрицательные ответы) на нескольких форумах, и я справедливо полагал, что несколько, это как минимум два … отсюда и выведенное количество.

Добавлено: 22 июн 2005, 12:51
sergvk
Как говорится, без выходных ситуаций не бывает... - :) )
Предлогаю обсудить один из вариантов решения моей "хотелки" - :) )

ActiveWorkbook.Author = "p1=Значение1,p2=Значение2"

При открытии можно "разобрать" строку Autor по "косточкам" - :) )
Чем вам не INI-файл, "внедренный" в файл? - :) )

Добавлено: 22 июн 2005, 13:31
pashulka
Вы будете долго смеяться, но этот вариант я тоже хотел предложить и косвенным тому доказательством служит то, что я сказал о существовании нескольких вариантов, а опубликовал только один. Правда у меня в MS Excel 97, 2000 а там у ActiveWorkbook нет такового свойства как Author, но я всегда делал вот так :

Код: Выделить всё

ActiveWorkbook.BuiltinDocumentProperties(3) = "SergVK"
Но если честно, то эта идея мне не нравиться, уж слишком всё на виду, возможно именно поэтому я и не стал Вам предлагать её предлагать ...

Другими, IMHO извращениями являются :
- хранить эти данные в самом программном коде
- поэкспериментировать с новыми возможностями MS Excel XP (там вроде что-то было)