我正在尝试保存excel文件,当单击一个复选框时。这是我的代码:
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
当我单击所需的复选框时,我可以看到正在更新excel值。但文件test3
访问权限现在已更改为Read-Only
模式。所以下次同一个点击处理程序失败时会出现例外情况:
Cannot save read-only file system: test3.xlsx
我犯了错误?我正在使用Microsoft excel 2007。
答案 0 :(得分:1)
问题在于您对属性进行了双击,并且调用Close
并未关闭第一个Excel应用程序。如果您查看任务管理器,您可能会看到它正在运行。
解决方案是不使用双点属性或方法并使用Marshal.ReleaseCOMObject(...)
,然后您的工作簿应该干净地关闭。