Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос, запрещающий редактировать файлы из дерева папок. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Макрос, запрещающий редактировать файлы из дерева папок.
MATADOR Дата: Четверг, 07.05.2015, 12:24 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте!

Первый раз на вашем сайте и первая попытка открыть тему.
Если криво получится, - не бейте сильно !
* * *
В наследство досталось большое к-во документов, наработанных в Exel.
Документы необходимо выложить в сеть организации для общего внутреннего пользования.
Перед этим желательно бы запретить рядовым пользователям вносить изменения в эти документы?
Объём документов значительный, - более тысячи...
Попробовал написать макрос, но не могу заставить макрос воспринимать различные по названию файлы, собранные в дереве папок, заполненных файлами.
Короче, - макрос не работает.

Моих знаний на такой макрос не хватает...
Пожалуйста, помогите...

С уважением,
ко всем, кто не останется равнодушным...
 
Ответить
СообщениеЗдравствуйте!

Первый раз на вашем сайте и первая попытка открыть тему.
Если криво получится, - не бейте сильно !
* * *
В наследство досталось большое к-во документов, наработанных в Exel.
Документы необходимо выложить в сеть организации для общего внутреннего пользования.
Перед этим желательно бы запретить рядовым пользователям вносить изменения в эти документы?
Объём документов значительный, - более тысячи...
Попробовал написать макрос, но не могу заставить макрос воспринимать различные по названию файлы, собранные в дереве папок, заполненных файлами.
Короче, - макрос не работает.

Моих знаний на такой макрос не хватает...
Пожалуйста, помогите...

С уважением,
ко всем, кто не останется равнодушным...

Автор - MATADOR
Дата добавления - 07.05.2015 в 12:24
MATADOR Дата: Четверг, 07.05.2015, 12:30 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Уточняю: Идея в том, чтобы макросом внести изменение в каждый отдельный файл, запретив в нём редактирование данных (паролем).
 
Ответить
СообщениеУточняю: Идея в том, чтобы макросом внести изменение в каждый отдельный файл, запретив в нём редактирование данных (паролем).

Автор - MATADOR
Дата добавления - 07.05.2015 в 12:30
DJ_Marker_MC Дата: Четверг, 07.05.2015, 12:30 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Если вопрос касается запрета на изменение в файлах, то толкните своих сисадминов.
Пускай создадут где нибудь на серваке папку и для нее настроят права доступа, кому в нее вообще нельзя заходить, кому можно заходить и редактировать, а кому можно только просматривать и открывать документы в режиме ТОЛЬКО ЧТЕНИЕ.
Это более красивое решение чем защита каждого файла.
 
Ответить
СообщениеЕсли вопрос касается запрета на изменение в файлах, то толкните своих сисадминов.
Пускай создадут где нибудь на серваке папку и для нее настроят права доступа, кому в нее вообще нельзя заходить, кому можно заходить и редактировать, а кому можно только просматривать и открывать документы в режиме ТОЛЬКО ЧТЕНИЕ.
Это более красивое решение чем защита каждого файла.

Автор - DJ_Marker_MC
Дата добавления - 07.05.2015 в 12:30
MATADOR Дата: Пятница, 08.05.2015, 13:12 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте!

Спасибо DJ_Marker_MC за Ваше участие.
...
Тут есть специфический момент...
...
Начальству почти всегда нужно: "оказывается ещё вчера"... :)
И частенько подталкают (назовём это в спину... :) ), - типа: "давай-быстрей"...
Поэтому есть такое опасение, что могу сам в запарке тупонуть и накриворучить.
И хотя эта документация на моей машине,
чтобы голову разгрузить от контроля над этими вопросами,
считаю, будет совсем не лишне, блокировать все файлы базы данных паролем.
Прошу простить мне мою настойчивость, но вопрос меня уже зацепил...
:)
...
В других программах такой приём называется "пакетная обработка файлов".
Это заложено в настройках меню - в том же Photoshop'е, например.
В Exel, если я это понимаю правильно, - необходимо написать Макрос.
Я записал простенький Макрос, который блокирует редактирование данных в
одном конкретном файле.

Чтобы не быть голословным - ниже привожу тело Макроса:

[vba]
Код
Sub Макрос2()
'
' Макрос2 Макрос
' ЗАПРЕТ РЕДАКТИРОВАНИЯ ДАННЫХ
'
' Сочетание клавиш: Ctrl+Shift+Y
'
ChDir "C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ"
Workbooks.Open Filename:= _
"C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ\ЭЛ.ЭНЕРГИЯ.xls"
Cells.Select
Range("BG78").Activate
Sheets("ЭЛ.ЭНЕРГИЯ").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("BL77:BP77").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ\ЭЛ.ЭНЕРГИЯ.xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close
End Sub
[/vba]

Здесь Exel прекрасно справляется с одним файлом, который я открываю
в процессе создания Макроса.

И все последующие запуски Макроса Exel отрабатывает.
Есть правда один момент:
:(
После выполнения процесса защиты данных от редактирования,
Макрос останавливается и просит вручную подтвердить перезапись файла.
Как это исправить у меня знаний и опыта не хватает... :(
...
Теперь бы, на сколько я понимаю, в теле Макроса надо заменить
название файла ЭЛ.ЭНЕРГИЯ.xls на шаблон...
что-то типа всем известного: *.* :)
...
Конкретный вопрос:
"Каким набором команд или командой или оператором (прошу извинить
если ошибся в терминологии), можно заменить в теле Макроса имя файла ЭЛ.ЭНЕРГИЯ.xls,
чтобы макрос отрабатывал все разноимённые файлы в конкретной папке,
или дереве папок ???
И после окончания процесса защиты не просил ручного подтверждения на перезапись?

С уважением и благодарностью ко всем,
кто не останется равнодушным...
[moder]Код оформляйте тегами (кнопка #)[/moder]


Сообщение отредактировал Pelena - Пятница, 08.05.2015, 13:23
 
Ответить
СообщениеЗдравствуйте!

Спасибо DJ_Marker_MC за Ваше участие.
...
Тут есть специфический момент...
...
Начальству почти всегда нужно: "оказывается ещё вчера"... :)
И частенько подталкают (назовём это в спину... :) ), - типа: "давай-быстрей"...
Поэтому есть такое опасение, что могу сам в запарке тупонуть и накриворучить.
И хотя эта документация на моей машине,
чтобы голову разгрузить от контроля над этими вопросами,
считаю, будет совсем не лишне, блокировать все файлы базы данных паролем.
Прошу простить мне мою настойчивость, но вопрос меня уже зацепил...
:)
...
В других программах такой приём называется "пакетная обработка файлов".
Это заложено в настройках меню - в том же Photoshop'е, например.
В Exel, если я это понимаю правильно, - необходимо написать Макрос.
Я записал простенький Макрос, который блокирует редактирование данных в
одном конкретном файле.

Чтобы не быть голословным - ниже привожу тело Макроса:

[vba]
Код
Sub Макрос2()
'
' Макрос2 Макрос
' ЗАПРЕТ РЕДАКТИРОВАНИЯ ДАННЫХ
'
' Сочетание клавиш: Ctrl+Shift+Y
'
ChDir "C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ"
Workbooks.Open Filename:= _
"C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ\ЭЛ.ЭНЕРГИЯ.xls"
Cells.Select
Range("BG78").Activate
Sheets("ЭЛ.ЭНЕРГИЯ").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("BL77:BP77").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ\ЭЛ.ЭНЕРГИЯ.xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close
End Sub
[/vba]

Здесь Exel прекрасно справляется с одним файлом, который я открываю
в процессе создания Макроса.

И все последующие запуски Макроса Exel отрабатывает.
Есть правда один момент:
:(
После выполнения процесса защиты данных от редактирования,
Макрос останавливается и просит вручную подтвердить перезапись файла.
Как это исправить у меня знаний и опыта не хватает... :(
...
Теперь бы, на сколько я понимаю, в теле Макроса надо заменить
название файла ЭЛ.ЭНЕРГИЯ.xls на шаблон...
что-то типа всем известного: *.* :)
...
Конкретный вопрос:
"Каким набором команд или командой или оператором (прошу извинить
если ошибся в терминологии), можно заменить в теле Макроса имя файла ЭЛ.ЭНЕРГИЯ.xls,
чтобы макрос отрабатывал все разноимённые файлы в конкретной папке,
или дереве папок ???
И после окончания процесса защиты не просил ручного подтверждения на перезапись?

С уважением и благодарностью ко всем,
кто не останется равнодушным...
[moder]Код оформляйте тегами (кнопка #)[/moder]

Автор - MATADOR
Дата добавления - 08.05.2015 в 13:12
AndreTM Дата: Пятница, 08.05.2015, 14:23 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Посмотрите решения:
http://www.excelworld.ru/board....-1-0-53

Но, вообще-то, все ещё проще: для того, чтобы перебрать все файлы в папке, достаточно воспользоваться процедурой Dir
[vba]
Код
Sub test()
     Dim cPath$, cName$, cFiles$, arrDir
     cPath = "C:\"
     cFiles = ""
     cName = Dir(cPath & "*.xls?")
     While cName <> ""
         cFiles = cFiles & Chr(1) & cName
         cName = Dir
     Wend
     If Len(cFiles) > 0 Then
         arrDir = Split(Mid(cFiles, 2), Chr(1))
         MsgBox cFiles
     End If
End Sub
[/vba]

Чтобы отключить подтверждения, - просто "обрамляете" нужную часть кода вызовами Applcation.DisplayAlerts
[vba]
Код
...
Applcation.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ\ЭЛ.ЭНЕРГИЯ.xls", _
  FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
  ReadOnlyRecommended:=False, CreateBackup:=False
Applcation.DisplayAlerts = True
...
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеПосмотрите решения:
http://www.excelworld.ru/board....-1-0-53

Но, вообще-то, все ещё проще: для того, чтобы перебрать все файлы в папке, достаточно воспользоваться процедурой Dir
[vba]
Код
Sub test()
     Dim cPath$, cName$, cFiles$, arrDir
     cPath = "C:\"
     cFiles = ""
     cName = Dir(cPath & "*.xls?")
     While cName <> ""
         cFiles = cFiles & Chr(1) & cName
         cName = Dir
     Wend
     If Len(cFiles) > 0 Then
         arrDir = Split(Mid(cFiles, 2), Chr(1))
         MsgBox cFiles
     End If
End Sub
[/vba]

Чтобы отключить подтверждения, - просто "обрамляете" нужную часть кода вызовами Applcation.DisplayAlerts
[vba]
Код
...
Applcation.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\user\Рабочий стол\БАЗА ДАННЫХ\ЭЛ.ЭНЕРГИЯ.xls", _
  FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
  ReadOnlyRecommended:=False, CreateBackup:=False
Applcation.DisplayAlerts = True
...
[/vba]

Автор - AndreTM
Дата добавления - 08.05.2015 в 14:23
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!