그래서 IT 부서에서 Office 2007을 Office 2007로 업그레이드했습니다. 많은 노력을 다시해야합니다. (VS 2013 Express는 프레임 워크 4.5).net & Excel - Office 2007에서 2013까지
내가 점점 오전 오류입니다 :
"유형 인터페이스 유형의 COM 객체의 시스템 .__하여 ComObject '를 캐스팅 할 수 없습니다'Microsoft.Office.Interop.Excel.Range ' 이 작업은 IID가 '{00020846-0000-0000-C000-000000000046}'인 인터페이스의 COM 구성 요소에서 QueryInterface 호출이 실패하여 다음 오류로 인해 실패했기 때문에 실패했습니다. 인터페이스가 등록되지 않았습니다 (HRESULT 예외 : 0x80040155 "
이것은 interop의 새 dll 버전 등으로 인해 발생하는 것으로 알고 있지만 유용한 내용을 찾지 않고 읽는 데 몇 시간을 소비했습니다. 1). 항목 (j-1). ToString() "
나는 몇 가지 해결 방법을 찾았고 결국 거의 효과를 볼 수있었습니다. 그러나 이전보다 훨씬 복잡해졌으며 여전히 범위와 정렬에 어려움을 겪고 있습니다.
사람이 할 수있는 간단한 코드를 공유 할 수있는 경우 : 정의 워크 시트
- 열기를 범위
정말 감사 할 것입니다. 풀!
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim misValue As Object = System.Reflection.Missing.Value
xlApp = CreateObject("Excel.application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
xlWorkBook = xlApp.Workbooks.Add(misValue)
Dim myrange As Excel.Range
Dim xlws As Excel.Worksheet
xlws = xlwb.Worksheets.Add(After:=xlwb.Worksheets(xlwb.Worksheets.Count))
xlws.Name = “name”
For i = 1 To dt.Rows.Count
For j = 1 To dt.Columns.Count
xlws.Cells(i, j) = dt.Rows(i - 1).Item(j-1).ToString()
Next
Next
xlws.Columns.AutoFit()
myrange = xlws.UsedRange
myrange.Select()
myrange.Sort(Key1:=myrange.Range("M1"), Order1:=Excel.XlSortOrder.xlAscending, Orientation:=Excel.XlSortOrientation.xlSortColumns)
myrange = xlws.Cells(2, 1)
myrange.Select()
xlWorkBook.Worksheets("Sheet1").Delete()
xlWorkBook.Worksheets("Sheet2").Delete()
xlWorkBook.Worksheets("Sheet3").Delete()
xlWorkBook.Worksheets("name").select()
xlWorkBook.SaveAs(folder_str & Format(Now, "MMddyyyy").ToString & " - " & “name” & ".xlsx")
xlWorkBook.Close()
xlApp.Quit()
Marshal.ReleaseComObject(xlws)
Marshal.ReleaseComObject(xlWorkBook)
Marshal.ReleaseComObject(xlApp)
설명과 코드 예제가 Office 2007에서 사용했던 것과 정확히 일치하므로 msdn 링크가 유용하지 않습니다. Office 2010 이후의 모든 기능이 변경된 것 같습니다. 그러나 이처럼 간단한 msdn 페이지를 찾을 수 없습니다. Office 2010/2013과 관련 있습니다. 매우 실망 스럽습니다. – damien
이 버전들 사이에 어떤 변경 사항도 보이지 않습니다. 무슨 변화하고있어? –
예를 들어 첫 번째 줄을 만들 수있는 유일한 방법은 oSheet.Name = "TEST"로 변경하는 것입니다. oWB.Worksheets (oSheet.Name) .Range ("A"& 1) = "이름" – damien