【发布时间】:2020-12-10 08:55:05
【问题描述】:
我在 excel.range 中收到此错误 Exception from HRESULT: 0x800A03EC。
这是我的以下代码
Private Sub excelInsertData(rowIndex As Integer, ColIndex As Integer, EDT As DataTable)
Try
Dim arr As Object(,) = New Object(EDT.Rows.Count - 1, EDT.Columns.Count - 1) {}
For r As Integer = 0 To EDT.Rows.Count - 1
Dim dr As DataRow = EDT.Rows(r)
For c As Integer = 0 To EDT.Columns.Count - 1
arr(r, c) = dr(c)
Next
Next
Dim c1 As Excel.Range = CType(xlWorkSheet.Cells(rowIndex, ColIndex), Excel.Range)
Dim c2 As Excel.Range = CType(xlWorkSheet.Cells(rowIndex + EDT.Rows.Count - 1, EDT.Columns.Count + ColIndex - 1), Excel.Range)
Dim range As Excel.Range = xlWorkSheet.Range(c1, c2)
range.Value = arr '---------ERROR THROWN HERE
Catch ex As Exception
MsgBox(ex.toString)
Finally
EDT.Rows.Clear() : EDT.Columns.Clear()
End Try
End Sub
我正在尝试将数据从数据表(在本例中为 EDT)传输到 Excel 模板。
以下是值范围、arr 和 EDT。
另外,如果需要,我可以附上我的 3b.xlsm 文件的模板。
请询问我是否遗漏了任何需要提供的信息。
【问题讨论】:
-
请查看:
New Object (EDT.Rows.Count - 1, EDT.Columns.Count - 1)和For r As Integer = 0 To EDT.Rows.Count - 1 -
那要检查什么?那只是数组大小声明。 @Dang D. Khanh
-
我认为可能是:
Dim arr (EDT.Rows.Count - 1, EDT.Columns.Count - 1) As Object。 -
如果我真的说,我从堆栈中复制了这个以搜索“如何使用范围将数据插入到 excel”,所以我可以按照你的建议尝试这个,但我认为这不是问题。 @DangD.Khanh
-
肯定有其他事情发生。在我使用您发布的代码进行的测试中,我没有遇到您描述的错误,并且代码在几秒钟内成功运行了一个包含 10 列和 100 行的数据表。您说原始文件是带有宏的模板,在我的测试中,这没有什么区别。您是否使用可能不同的文件测试了此代码,以至少消除该文件的问题?
标签: excel vb.net excel-interop