更改工作簿vba的访问模式

时间:2019-07-11 06:32:25

标签: excel vba

我正在研究vba,我想知道如何更改工作簿的访问模式,该工作簿在读/写模式下以只读模式打开,之后再继续其他说明。 我设法更改了访问模式,只是它不执行以下指令。 谢谢。

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

   MsgBox "ok"

End Sub

2 个答案:

答案 0 :(得分:2)

您的代码的更复杂的版本:

看看此link上有关功能.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

我认为问题应该出在ActiveworkbookThisworkbook

  • 另一个建议...阅读关于Personal MacroWorkbook的信息,然后尝试保存其中的代码,以便您可以通过定义适当的引用来有效地使用它。

答案 1 :(得分:0)

Microsoft states在其“ 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