我正在尝试将Excel 2013嵌入到vb.net Windows窗体应用程序中 . 通过Interop我实例化应用程序,打开一个电子表格,然后指定一个面板作为其父级 . 我正在测试的电子表格是一个空的电子表格 . 电子表格打开正常,但在输入少量数据后很快Excel崩溃 . 这适用于Excel的早期版本(2010年及以下版本) .

错误应用程序名称:EXCEL.EXE,版本:15.0.4763.1000,时间戳:0x55f7eebf
错误模块名称:EXCEL.EXE,版本:15.0.4763.1000,时间戳:0x55f7eebf
异常代码:0xc0000005
故障偏移:0x00c2f2c5
错误进程id:0x1ed4
故障应用程序启动时间:0x01d1174aa8019193
错误应用程序路径:C:\ Program Files(x86)\ Microsoft Office \ Office15 \ EXCEL.EXE
错误模块路径:C:\ Program Files(x86)\ Microsoft Office \ Office15 \ EXCEL.EXE
报告编号:e9a4fbbd-833d-11e5-8883-7ce9d3bf593e

Imports Microsoft.Office.Interop 

 Public Class Form1
Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const WM_SYSCOMMAND As Integer = 274
Private Const SC_MAXIMIZE As Integer = 61488 

 Private Sub btnShowExcel_Click(sender As Object, e As EventArgs) Handles btnShowExcel.Click
        Dim sExcelFileName = "C:\book1.xlsx"
        Dim oExcel As New Excel.Application 

     oExcel.DisplayAlerts = False
    oExcel.Workbooks.Open(sExcelFileName)
    oExcel.Application.WindowState = Excel.XlWindowState.xlMaximized
    oExcel.Visible = True

    SetParent(oExcel.Hwnd, pnlExcel.Handle)
    SendMessage(oExcel.Hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0)  
 

 End Sub 
End Class