Страницы: 1
RSS
Создание из VBA книги с макросами
 
Добрый день!

Пытаюсь создать форму, которую будут заполнять филиалы передавать в головной офис, а после проверки файл будет передаваться заказчику.
В форме есть столбец "контроль", который заказчику не нужен, но нужен головному офису для проверки корректности заполненных данных.

Возникла идея скрыть этот столбец при формировании файла для экспорта, но автоматически показывать его при открытии файла, если пользователь находится в нужном домене.

Проблема в том, что файл для экспорта я создаю путём копирования листа с данными в новую книгу, а потом пытаюсь в неё добавить макрос "Auto_Open", который открывает скрытый столбец, если пользователь входит в нужный домен.

Макрос на других компах не работает - выдаёт ошибку 1004 "Программный доступ к проекту Visual Basic не является доверенным".

Нашёл в интернетах, что можно эту опцию отключить путём редактирования реестра, но своими руками создавать такую дыру в безопасности не хочется, да и не факт, что у пользователей прав хватит.

Может есть какой-то другой более разумный вариант сделать книгу, в которой у пользователей будет скрыт или видим нужный столбец?

- Создавать копию текущей книги не хочу (в ней куча лишних макросов и листов)
- Отправлять пользователям 2 книги (книга для заполнения и шаблон, используемый для экспорта)  - странно и не удобно.
- Про дыры  с отключением безопасности я уже писал.
- Попробовал написать макрос в листе, который копирую и экспортировать его уже вместе с макросом, но там из подходящих событий только onActivate (не срабатывает если лист открыт) и onSelectChange (нужно клацать лишний раз).
Я не волшебник, я только учусь.
 
Цитата
Wiss написал:
Может есть какой-то другой более разумный вариант сделать книгу, в которой у пользователей будет скрыт или видим нужный столбец?
ну так и поместите проверку и скрытие и открытие в модуль этого листа на активацию. Предварительно скрыть, а в книге лист сделать не активным. открыли, перешли на лист столбец или появился или не виден. правда при сохранении он так и останется открытым и если не переключатся , то и проверка не произойдет. Но а что если дополнить скрытие условным форматированием, на основе одной рассчитанной ячейки в которой будет False/True  как результат функции проверки принадлежности к домену? блин забыл что нужно из модуля листа брать а от туда функция не сработает.
Изменено: БМВ - 05.06.2019 17:39:18
По вопросам из тем форума, личку не читаю.
 
БМВ, сейчас в книге один лист (нужный). Делать второй лист (бесполезный) только для того, чтобы каждый раз активировать нужный и срабатывал макрос, который на самом деле глубоко опциональный, довольно сомнительная идея. Хотя, её тоже стоит обдумать...
1. Открыли  книгу.
2. Жамкнули на нужный лист.
3. Посмотрели на контроль.
4. Вот тут пока мысль и обрывается:
 4.1 Вышли без сохранения - заказчик с ненужным активным листом.
 4.2 Скрыли/удалили лист, сохранились и вышли - зачем тогда вообще макрос, можно сразу было не скрывать.
 4.3. Написать макрос, который при закрытии книги будет сам скрывать, активировать нужный лист и сохранять - можно, но ну его нафиг, мало ли что они там наредактируют + я же не могу макрос на beforeClose написать, блин а делать одноразовую самоуничтожающуюся кнопку излишне.
Изменено: Wiss - 05.06.2019 17:41:47
Я не волшебник, я только учусь.
 
Цитата
Wiss написал:
файл для экспорта я создаю путём копирования листа с данными в новую книгу
Копируйте лист в книгу, где уже есть все необходимые для пользователей макросы. Можно такую книгу иметь как шаблон *.xltm.
Владимир
 
sokol92, можно, но это мне нужно пользователям (филиалам) передавать 2 книги, и объяснять, что вот в этой книге работайте, а вот эту руками не трогайте, но она всё-равно нужна.

Помню, что где-то видел пример использования листов excel для хранения файлов... Может быть настало время разобраться в том, как это работает, но будет уж слишком экзотично и боюсь, что не стабильно.
Я не волшебник, я только учусь.
 
Зачем передавать две книги? Передаете одну с одним листом для заполнения и макросами.
Владимир
 
У меня сейчас в книге строк 500 кода, используемого при первичном заполнении и пихать всё это в выходной документ совсем не хочется + придётся разбираться что там сломается и заглючит при удалении лишних листов.
Я не волшебник, я только учусь.
 
Цитата
Wiss написал:
Делать второй лист (бесполезный)
- Всегда можно сделать его полезным :-) ? Титульным и завязать на него что-то , чтоб без него не работало :-)

Цитата
Wiss написал:
видел пример использования листов excel для хранения файлов
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=2&TID=106335&TITLE_SEO=106335-khranenie-faylov-i-faylovyy-menedzher-v-fayleliste-excel&MID=880703#message880703

sokol92, Владимир, привет. Если правильно понял, то есть форма ввода и после заполнения формируется файл с данными в отдельной книге на основании листа шаблона.
По вопросам из тем форума, личку не читаю.
 
Здравствуйте, Михаил! Динамическое изменение текста макросов - плохая идея (да еще и глючит часто). Мы в подобных случаях делаем кнопку "Сформировать файл для заказчика" и формируем то, что согласовано с заказчиком (ничего лишнего). Скрывать столбцы бессмысленно, рано или поздно их случайно откроют и начнут задавать вопросы.
Владимир
 
БМВ,  да на выходе у меня получается просо табличка с данными - реестр чего-то там. То есть там кроме самих данных ничего не нужно. Я поэтому столбец с проверкой ошибок и прячу. Там никакого криминала нету, просто могут быть (будут) лишние тупые вопросы: «А это что за столбец?! Он нам не нужен!Уберите!». То есть он нужен только промежуточному звену, которое эту форму должен предварительно просмотреть и передать дальше (просто передать, менять/добавлять там ничего не планируется).
Я не волшебник, я только учусь.
 
sokol92, это и была кнопка «Сделать файл для заказчика», а потом началось...
Обычно, мы собираем Файлы от нескольких филиалов, объединяем и передаём, а тут ничего объединять не нужно, нужно передать как есть, если никаких косяков не найдём.
Я не волшебник, я только учусь.
 
Даблклик на области которая известна промежуточному учвтнику и там код проверки и открытия столбца?
По вопросам из тем форума, личку не читаю.
 
По кнопке "Передать файл для заказчика":
Если макросы заказчику не нужны, то копируем лист(ы) в новую книгу, убираем внешние ссылки и выполняем другие преобразования, сохраняем как *.xlsx. Иногда можно сразу сохранить текущую книгу как *.xlsx, удалив таким образом макросы.

Если нужно передать файл с макросами, то открываем (readOnly) шаблон *.xltm, содержащий необходимые для заказчика макросы, копируем в новую книгу листы и т.д., сохраняем как *.xlsm
Владимир
 
БМВ, sokol92, извините, вчера остался без интернета и не мог ничего ответить. Спасибо за советы. Они ещё пригодятся:)

Проблема решена: если ошибок нет - столбец скрывается при формировании выходного файла, если есть ошибки, то он остаётся и его при проверке будут прятать вручную.
Я не волшебник, я только учусь.
Страницы: 1
Наверх