VBA Excel сделать книгу только для чтения - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть книга, которая автоматически обновляется макросом VBA, поэтому некоторые значения могут быть обновлены.

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

SetAttr ThisWorkbook.Path & "\booktoupdate.xlsx", vbNormal

'Paste in some values

SetAttr ThisWorkbook.Path & "\booktoupdate.xlsx", vbReadOnly

Однако любой пользователь может легко зайти в свойства файла и отключить только чтение.Есть ли способ защитить файл, так что только для чтения можно изменить только VBA?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Это точно соответствует вашим требованиям, при сохранении рабочей книги вы можете включить пароль, как показано ниже,

ActiveWorkbook.SaveAs Filename:="ThisWorkbook.Path & "\booktoupdate.xlsx", _WriteResPassword:="enter your password", ReadOnlyRecommended:=True

, когда другой пользователь попытается отредактировать его, запросит пароль и Excel останется в режиме только для чтения

0 голосов
/ 23 ноября 2018

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

Dim SH As Worksheet
For Each SH In ThisWorkbook.Sheets
    SH.Unprotect Password:="pass" 'choose a different password if you like
Next SH

'Do your thing

For Each SH In ThisWorkbook.Sheets
    SH.Protect Password:="pass"
Next SH

Честность Я не знаю, сможете ли вы сделать именно так, как вы просили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...