확인란을 클릭 할 때 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
원하는 체크 박스를 클릭하면 엑셀 값이 업데이트되고 있음을 알 수 있습니다. 그러나 test3
이제 파일 액세스가 Read-Only
모드로 변경되었습니다 . 따라서 다음에 동일한 클릭 핸들러가 다음과 같은 예외와 함께 실패합니다.
Cannot save read-only file system: test3.xlsx
내가 실수하는 곳은? Microsoft Excel 2007을 사용하고 있습니다.
문제는 속성을 이중으로 표시하고 호출 Close
이 첫 번째 Excel 응용 프로그램을 닫지 않는다는 것입니다. 작업 관리자를 보면 실행중인 것을 볼 수 있습니다.
해결책은 점 속성이나 메서드를 이중화하지 않고를 사용하는 것입니다 Marshal.ReleaseCOMObject(...)
. 그러면 통합 문서가 깨끗하게 닫힙니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다