保存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。