изменить режим доступа к книге vba - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над vba, и я хотел бы знать, как изменить режим доступа к книге, которая открыта в режиме только для чтения в режиме чтения / записи, и после этого перейти к другим инструкциям.Мне удалось изменить режим доступа за исключением того, что он не выполняет следующие инструкции.Спасибо.

Sub RW()
   If ThisWorkbook.ReadOnly Then
       ThisWorkbook.Saved = True
       ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite
   End If

   MsgBox "ok"

End Sub

Ответы [ 2 ]

2 голосов
/ 11 июля 2019

Более изощренная версия вашего кода:

Посмотрите информацию, представленную по этой ссылке о функции .ChangeFileAccess.

Sub RW()

   If ThisWorkbook.ReadOnly Then

      MsgBox "Access Changed from Read Only to Read/Write"
      ThisWorkbook.Saved = True
      ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite

   Else: MsgBox "No Access Changed"

   End If

End Sub

Я думаю, что проблема должна быть с Activeworkbook & Thisworkbook

  • Еще одно предложение ... Прочтите о Персональная MacroWorkbook и попробуйте сохранить этот код в нем, чтобы вы могли использовать его эффективно и путем определения правильных ссылок.
0 голосов
/ 11 июля 2019

Microsoft заявляет в своем «Методе Workbook.ChangeFileAccess», когда вы переключаетесь с книги, которая открыта ReadOnly на ReadWrite, что Excel необходимо извлечь новую копию этой же книги с диска, открывая, таким образом,новая версия файла.

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

Примечание.) или любым другим способом, которым файл еще не сохранен на диске, это может вызвать ошибку.

Private Sub Workbook_Open()

   If ActiveWorkbook.ReadOnly Then

        MsgBox "Access will be changed from Read Only to Read/Write." & _
            vbNewLine & "The file will reopen in ReadWrite mode."

      ActiveWorkbook.Saved = True
      ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite

   Else: MsgBox "No Access Changed"

   End If

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