保存Excel文件正在将文件访问权限更改为只读

我试图保存Excel文件,当一个checkbox被点击。 这是我的代码:

Private Sub CheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged 'MsgBox(CType(sender, CheckBox).Name) Dim objExcel, objWorkbook, fileLocation fileLocation = "C:\Users\batman\Desktop\test3" objExcel = CreateObject("Excel.Application") objWorkbook = objExcel.Workbooks.Open _ (fileLocation) Dim strArray() As String strArray = CType(sender, CheckBox).Name.Split(",") objWorkbook.WorkSheets(CInt(strArray(0))).Activate() objExcel.Cells(CInt(strArray(1)), 3).Value = "From Windows Form" objWorkbook.Application.DisplayAlerts = False objWorkbook.SaveAs(fileLocation) objWorkbook.Close(SaveChanges:=False) End Sub 

当我点击所需的checkbox,我可以看到Excel值正在更新。 但是文件test3访问现在变成了Read-Only模式。 所以下一次相同的点击处理程序失败,例外说:

 Cannot save read-only file system: test3.xlsx 

我犯了什么错误? 我正在使用Microsoft Excel 2007。

问题是,您正在双点击属性并调用Close不closures第一个Excel应用程序。 如果你看任务pipe理器,你可能会看到它运行。

解决方法是不要双点属性或方法,并使用Marshal.ReleaseCOMObject(...) ,那么你的工作簿应该干净地closures。