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

时间:2015-02-21 17:58:04

标签: .net vb.net excel winforms

我正在尝试保存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。

1 个答案:

答案 0 :(得分:1)

问题在于您对属性进行了双击,并且调用Close并未关闭第一个Excel应用程序。如果您查看任务管理器,您可能会看到它正在运行。

解决方案是不使用双点属性或方法并使用Marshal.ReleaseCOMObject(...),然后您的工作簿应该干净地关闭。