Страницы: 1
RSS
Доступ к книге по соответствию заданного пути, Зашита данных
 
Здравствуйте!
Подскажите, как с целью защиты книги, ограничить доступ к ней по соответствию заданного пути к файлу?.
Т.е., если файл лежал на диске C:\\Мои документы, а его переместили на D:\\Сворованное, то макрос должен проверить полный путь к файлу и запретить доступ к книге.
Спасибо.
 
Вариант: в модуль книги
Код
Private Sub Workbook_Open()
    If ThisWorkbook.Path <> "C:\Мои документы" Then
        MsgBox "Книга ворованная!", 64, "Фиг вам!"
        ThisWorkbook.Close
    End If
End Sub
Но ведь могут отключить макросы и открыть...
 
спасибо.
Не, не смогут, т.к. листы скрыты, а на VBA пароль
 
В модуль "ЭтаКнига" поместите такой код:
Код
Private Sub Workbook_Open()
    If ActiveWorkbook.Path <> "C:\Мои документы" Then Application.Quit
End Sub
Не стреляйте в тапера - он играет как может.
 
Цитата
vitaboyarsh написал:
Не, не смогут, т.к. листы скрыты, а на VBA пароль
Почему не смогут? В настройках Excel отключат макросы, и всё - файл должен открыться )
 
Не помогло оба варианта.
Даже если путь верен, то всё равно или появляется сообщение, или закрывается приложение.
Изменено: vitaboyarsh - 29.06.2016 13:50:59
 
Цитата
vitaboyarsh написал:
Не помогло
Точнее можно?
 
Я понял так, что в код
Код
Private Sub Workbook_Open()
    If ThisWorkbook.Path <> "C:\Мои документы" Then
        MsgBox "Книга ворованная!", 64, "Фиг вам!"
        ThisWorkbook.Close
    End If
End Sub

вместо "C:\Мои документы" необходимо ввести свой путь к файлу.
Затем сохраниться и выйти.

Потом если НЕ менять расположение файла, то при его открытии должна появиться книга.
Однако, по макросу появляется сообщение и далее ОК - закрывается файл.

а должно быть так только если файл поменяет расположение.
 
Можно сделать вывод, что путь указан неправильно - иначе бы сообщения вообще не было. Проверьте путь.
 
В окне Immediate (для открытия этого окна нажмите Ctrl+G) введите:
Код
? ThisWorkbook.Path
или
Код
? ActiveWorkbook.Path
и нажмите Enter. Полученный путь скопируйте и вставьте в код макроса.
Не стреляйте в тапера - он играет как может.
 
спасибо, разобрался, я в путь писал ещё заголовок файла, а надо только путь до папки
 
vitaboyarsh,если контролировать не только путь, но и имя файла, тогда напишите условие так:
Код
If ActiveWorkbook.Path & "\" & ActiveWorkbook.Name <> "C:\Мои документы\Файл.xlsm" Then 
Не стреляйте в тапера - он играет как может.
 
Цитата
Ts.Soft написал:
если контролировать не только путь, но и имя файла, тогда...
Тогда можно использовать ThisWorkbook.FullName ))
Но мне кажется нелепым проверка ИМЕНИ файла: ведь мы открываем конкретный файл.  
 
Цитата
Юрий М написал:
можно использовать ThisWorkbook.FullName ))
Я догадывался, что должно быть свойство полного пути, но искать написание было лень :) Хотя кажется что когда-то где-то использовал
Цитата
Юрий М написал:
мне кажется нелепым проверка ИМЕНИ
В некоторых случаях может иметь смысл. Например у меня у некоторых особо одарённых пользователей есть файлы "Файл.xls", "Копия Файл.xls", "Копия (2) Файл.xls", "Копия (3) Файл.xls" и т.д., а потом сами не знают куда что заносили и что отправлять....
Изменено: Ts.Soft - 29.06.2016 14:39:27
Не стреляйте в тапера - он играет как может.
Страницы: 1
Наверх