<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBA: Запаролить листы в книге Excel]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=15065&amp;type=atom" />
	<updated>2021-06-24T16:09:08Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=15065</id>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148587#p148587" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>misha_057 пишет:</cite><blockquote><p>Это для снятия защиты, что совсем не обязательно.&nbsp; Пользователю можно открыть несколько ячеек для ввода, а лист держать под паролем.<br />Как таким методом отобразить скрытый лист, соответствующий паролю? Без хранения, наверное, никак.</p></blockquote></div><p>Я же написал — как. К сожалению, сие не работает, поскольку ошибка при исполнении метода .Unprotect(), увы, не перехватывается:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="https://i.imgur.com/jx0Korm.png" alt="https://i.imgur.com/jx0Korm.png" /></span></p></div></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-24T16:09:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148587#p148587</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148581#p148581" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>заводим массив/словарь листов, перебираем листы, пробуем введённый пароль</p></blockquote></div><p> Это для снятия защиты, что совсем не обязательно.&nbsp; Пользователю можно открыть несколько ячеек для ввода, а лист держать под паролем.<br />Как таким методом отобразить скрытый лист, соответствующий паролю? Без хранения, наверное, никак.</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Сие тоже отнюдь не панацея — пользователь может сохранить Рабочую книгу (со снятой защитой), а затем тупо «снять» процесс excel.exe.</p></blockquote></div><p>Что же он сохранит со своим паролем, только свои раскрытые листы?</p><p>Уже изобрели макрос сброса паролей листов, который можно легко нагуглить, так что изощряться с паролями нет смысла.<br />Интересно другое, этот макрос нужно вставить в редактор, поможет ли здесь защита редактора паролем?</p>]]></content>
			<author>
				<name><![CDATA[misha_057]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29511</uri>
			</author>
			<updated>2021-06-24T11:39:25Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148581#p148581</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148579#p148579" />
			<content type="html"><![CDATA[<p>Пожалуй, надо пояснить.</p><p>Во времена первых архиваторов под MS DOS был такой прародитель архиваторов PKARC (не тот, который тоже назывался PKARC, а позже стал PKZIP, а оригинальный). Так вот он нигде не хранил пароль от архива, а тупо использовал введённый пароль для расшифровки. Если пароль был неправильный — получалась белиберда.</p><p>Так же и здесь — просто заводим массив/словарь листов, перебираем листы, пробуем введённый пароль для снятия защиты, перехватываем ошибку времени исполнения при методе .UnProtect(). В массиве/словаре помечаем, для каких листов удалось снять защиту (и только для них же при закрытии книги выполняем .Protect()).</p><p>P.S. Сие тоже отнюдь не панацея — пользователь может сохранить Рабочую книгу (со снятой защитой), а затем тупо «снять» процесс excel.exe.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-23T19:43:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148579#p148579</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148578#p148578" />
			<content type="html"><![CDATA[<p><strong>misha_057</strong>, предлагаю нигде не хранить.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-23T19:21:23Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148578#p148578</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148573#p148573" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Просто не надо хранить пароли в коде.</p></blockquote></div><p> Где предлагаете их хранить для книги Екселя? И чем плоха защита макроса паролем?</p>]]></content>
			<author>
				<name><![CDATA[misha_057]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29511</uri>
			</author>
			<updated>2021-06-23T08:01:34Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148573#p148573</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148569#p148569" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>misha_057 пишет:</cite><blockquote><p>В вопросе не сказано о возможности видеть листы,</p></blockquote></div><p>Как бы:<br /></p><div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>Но тогда перестаёт работать то, ради чего всё делалось: пользователь начинает видеть все листы в книге</p></blockquote></div><p>так.</p><div class="quotebox"><cite>misha_057 пишет:</cite><blockquote><p>Если нужна защита посильнее - листы можно скрыть при закрытии файла и активировать нужный при открытии. И макросы тоже можно запаролить. А от мамкиных хакеров в Екселе защиты нет.</p></blockquote></div><p>Просто не надо хранить пароли в коде.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-22T20:32:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148569#p148569</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148565#p148565" />
			<content type="html"><![CDATA[<p><strong>alexii</strong><br />Что &quot;ну и?&quot; Адекватный пользователь откроет файл, а не начнет его ломать.<br />В вопросе не сказано о возможности видеть листы, а сказано - получить доступ.<br />Если нужна защита посильнее - листы можно скрыть при закрытии файла и активировать нужный при открытии. И макросы тоже можно запаролить. А от мамкиных хакеров в Екселе защиты нет.</p>]]></content>
			<author>
				<name><![CDATA[misha_057]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29511</uri>
			</author>
			<updated>2021-06-22T09:21:16Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148565#p148565</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148512#p148512" />
			<content type="html"><![CDATA[<p><strong>misha_057</strong>, ну, и? Я открыл файл, отказался от исполнения макросов и вижу оба листа. Нажал ALt-F11, посмотрел в код, снял парольную защиту.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-19T00:01:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148512#p148512</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148505#p148505" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong> Есть такая возможность.</p>]]></content>
			<author>
				<name><![CDATA[misha_057]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29511</uri>
			</author>
			<updated>2021-06-18T10:05:47Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148505#p148505</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=136687#p136687" />
			<content type="html"><![CDATA[<p>Ясно, спасибо.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2019-11-26T03:47:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=136687#p136687</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=136685#p136685" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong>, в общем и целом — нет такой возможности.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2019-11-25T21:24:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=136685#p136685</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=136667#p136667" />
			<content type="html"><![CDATA[<p><strong>red2881</strong>, спасибо, но по первой ссылке вводятся ограничения на область в рамках листа, в то время как нужно ограничить доступ к листу в рамках книги.</p><p>По второй ссылке находится пример, который я и описывал в первом сообщении. Он, судя по всему, построен на костылях и подпорках. При выходе из программы скрипт пытается сохранить файл без моего ведома, что уже не очень то правильно. Но это полбеды, если его открывает человек, имеющий права только на чтение файла, вылезает ошибка visual basic: [End] / [Debug] / [Отмена], плюс дважды вылезает окно с предложением сохранить файл.</p><p>Эти нежелательные окна перестают вылезать, если удалить в скрипте строку <em>ThisWorkbook.Save</em>. Но тогда перестаёт работать то, ради чего всё делалось: пользователь начинает видеть все листы в книге, окно ввода пароля при этом можно просто игнорировать.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2019-11-23T09:51:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=136667#p136667</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=136666#p136666" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong><br />Добрый вечер. <br /><a href="http://www.cyberforum.ru/vba/thread781094.html">http://www.cyberforum.ru/vba/thread781094.html</a><br /><a href="https://www.excel-vba.ru/chto-umeet-excel/kazhdomu-polzovatelyu-svoj-listdiapazon/">https://www.excel-vba.ru/chto-umeet-exc … tdiapazon/</a></p>]]></content>
			<author>
				<name><![CDATA[red2881]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=30934</uri>
			</author>
			<updated>2019-11-22T17:49:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=136666#p136666</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBA: Запаролить листы в книге Excel]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=136652#p136652" />
			<content type="html"><![CDATA[<p>Существует ли способ запаролить отдельные листы без багов и глюков? Чтобы пользователь открыл файл xls, в выпадающем списке выбрал свой логин, ввёл пароль и получил доступ только к определённым листам.<br />В интернете находил один способ, но там сплошные костыли, то и дело вылетает предупреждение visual basic: End / Debug / Отмена.<br />Примечание: файл xls одним пользователям будет доступен только для чтения, другим с возможностью изменения.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2019-11-21T19:31:10Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=136652#p136652</id>
		</entry>
</feed>
