2016-09-15 40 views
0

我想要一個DataGridView到Excel工作表的內容通過使用下面的代碼錯誤HRESULT 0x800a03ec試圖將值分配給Excel單元格

Dim xlApp As New Microsoft.Office.Interop.Excel.Application 
Dim xlBook As Microsoft.Office.Interop.Excel.Workbook = xlApp.Workbooks.Add 
Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet = CType(xlBook.Sheets(1), Microsoft.Office.Interop.Excel.Worksheet) 
xlSheet.Name = "MySheet" 
xlApp.Visible = True 
With xlSheet 
    For C As Integer = 0 To DGV_IntCalc.Columns.Count - 1 
     .Range(.Cells(1, C + 1)).Value = DGV_IntCalc.Columns(C).HeaderText 
     For R As Integer = 0 To DGV_IntCalc.RowCount - 1 
      .Range(.Cells(R + 2, C + 1)).Value = DGV_IntCalc.Rows(R).Cells(C).Value 
     Next 
    Next 
End With 

我得到錯誤的.Range(.Cells(1, C + 1)).Value = DGV_IntCalc.Columns(C).HeaderText

我出口有Option Strict On所以我不能使用.Cells(1, C + 1).Value = DGV_IntCalc.Columns(C).HeaderText,因爲後期綁定

我在哪裏錯了?

+0

我想你需要'.Range(.Cells(1,C + 1))值= DGV_IntCalc.Columns(。 C + 1).HeaderText',因爲當'C = 0'時,'Columns(0)'是什麼? – BruceWayne

+0

@BruceWayne我檢查了'DGV_IntCalc.Columns(C).HeaderText'的值,它是一個包含DGV第一列標題文本的字符串。問題必須在行的第一部分:'.Range(.Cells(1,C + 1))。Value =' – genespos

+0

對於故障排除,只需製作'.Range(.Cells(1,1))。價值「,看它是否仍然會拋出錯誤。 – BruceWayne

回答

2

即使範圍只有一個單元格,也需要插入範圍的開始和結束單元格。

的解決辦法是改變:

.Range(.Cells(1, C + 1)).Value = DGV_IntCalc.Columns(C).HeaderText 

有:

.Range(.Cells(1, C + 1), .Cells(1, C + 1)).Value = DGV_IntCalc.Columns(C).HeaderText 
+0

是的。我怎麼沒有抓到這個?這通常是我檢查的第一件事。好的電話:D – BruceWayne

相關問題