Excel OLE из 1С: не работает EnableSelection #86012


#0 by FNM
Граждане!Замучился: не работает метод EnableSelection. Цель: взять лист, защитить его от изменения и копирования кусками; записать под новым именем.Вообще, это нужно для того, чтобы создать в 1С прайс, заблокировать в нём всё, кроме колонки для ввода количества и послать клиенту. Опыт показал то, что если этого не сделать, клиенты начинают его резать и удалять скрытые служебные поля.Спасибо.______________________//Код:
#1 by Gloom
На защищённом листе нельзя этим свойством пользоваться...
#2 by FNM
===============Так тоже пробовал - не помогает.А лист в исходном файле Тест1 не защищён.
#3 by Gloom
У меня работает...
#4 by FNM
Мож код дашь.
#5 by Gloom
Даю:
#6 by FNM
Спасибо.А ты попробуй его после этого записать и снова открыть.
#7 by pixel2007
А если Э.Worksheets.EnableSelection = -1;
#8 by FNM
Ошибку выдаёт. Там 3 значения может быть: 0, 1 и - 4142. Все 3 испробованы; Эй, куда пропал. Обиделся что ли.Не бросайте меня!!!
#9 by pixel2007
Сорри, я подумал EnableSelection может быть false или true.
#10 by Gloom
А, понял... У тебя, видимо xl < 2002.
#11 by FNM
Excel 2002 SP3. Когда сохраняешь, закрываешь и снова открываешь - лист защищён, а выделять и копировать - позволяет.
#12 by Gloom
До xl2002 свойство EnableSelection было т.н. "does not stick".Начиная с 2002 можно установить это и аналогичные свойства ручками через UI - должны сохраняться...
#13 by Gloom
+12Начиная с 2002 у метода Protect появились дополнительные флаги, позволяющие рулить вставкой/удалением строк/столбцов, сортировкой, фильтрацией, форматированием...
#14 by FNM
Дык когда руками ставишь - всё нормально. А кодом, как в - не получается.А после выполнения ты пробовал сохранить, закрыть и снова открыть. У меня сразу после выполнения копировать нельзя, а после записи и открытия - можно.Что же делать
#15 by Adapter
Я недавно то же с этим бился. Меня поразил глюк Екс 2002 - защищенный лист можно скопировать через ctrl+A и вставить в новую книгу. Вся защита разом слетает - делай что хочешь. А у меня 36 филиалов отчетность в Екс. сдают.EnableSelection у меня тоже программно не заработал - это все-таки еще один баг мелкомягкихЯ с этим бился 3 дня. И программно выделение ячеек ловил, чтоб ctrl+A забанить и защиту структуры книги ставил, чтоб нельзя было добавитьскопировать листы книги через их ярлычки. в результате только натыкался на новые глюки.Вобщем я так дырку закрыл. Поставил макрос на выделение конкретной ячейки листа, которая называлась "Проверка отчета". - выскакивал MsgBox "отчет не скопированный".Потому что при копировании листа макросы не копируются (и за это спасибо, любимый БГ :)Тебе это тоже подойдет - если прайс отправить почтой и на той стороне побоятся открыть файл с макросами - пусть отключат макросы вообще. главное когда тебе все вернется - включить макросы и проверить что лист не копировали
#16 by FNM
Спасибо. Только что пришёл к тому же выводу, скопировав пример их Help и запустив его прямо в Excel: не работает!Вариант с макросами не рассматривал: боюсь клиентов отпугнуть, а это не в наших интересах - заявки придётся вместо них руками набивать.Но тема пока не закрыта!Если найду решение без макросов - кину сюда.А мож кто уже нашёл
#17 by Gloom
(15, 16) Это не баг мелкомягких, это скорее недокументированная фича.Ещё раз повторю - свойства EnableSelection, ScrollArea при программной установке не запоминаются, только ручками.В принципе, достаточно вставить код установки EnableSelection в событие Workbook_Open...
#18 by FNM
Проблема - решена с помощью WSH: галку, соответствующую EnableSelection, ставит SendKeys(...). Если вдруг кто захочет покопаться в моём коде на эту тему - оставляйте координаты.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям