我正在研究vba,我想知道如何更改工作簿的访问模式,该工作簿在读/写模式下以只读模式打开,之后再继续其他说明。 我设法更改了访问模式,只是它不执行以下指令。 谢谢。
Sub RW()
If ThisWorkbook.ReadOnly Then
ThisWorkbook.Saved = True
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite
End If
MsgBox "ok"
End Sub
答案 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
我认为问题应该出在Activeworkbook
和Thisworkbook
答案 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