snehalpawar Ответов: 2

Исключение из HRESULT: 0x800a03ec в приложении excel


Я пытаюсь сохранить рабочий лист excel в VB, но это дает мне ошибку на
xlWorkBook = xlApp.Workbooks.Add(MissValue)

эта строка как ошибка:
Exception from HRESULT: 0x800A03EC


Public Sub ExportToExcelFromDGView(ByVal dgView As DataGridView, ByVal strFileName As String, _
                                                  ByVal ParamArray strSkippedCol() As String)

        Try
            Dim strOutput(dgView.RowCount + 2, dgView.ColumnCount - 1) As String

            Dim str As String = ""
            Dim xlApp As New Excel.Application
            Dim xlWorkBook As Excel.Workbook
            Dim xlWorkSheet As Excel.Worksheet

            Dim MissValue = System.Reflection.Missing.Value
            xlApp = New Excel.Application
            xlWorkBook = xlApp.Workbooks.Add(MissValue)
            xlWorkSheet = xlWorkBook.Sheets.Add("Sheet1")

            '****For Column Heading(Adding column Names)
            Dim intColDisp As Integer = 0
            Dim flgCol As Boolean = False
            For intCol As Integer = 0 To dgView.ColumnCount - 1
                'Check for skipped Records
                flgCol = False
                For iArrLength As Integer = 0 To strSkippedCol.Length - 1
                    If dgView.Columns(intCol).Name.Trim.ToUpper = strSkippedCol.GetValue(iArrLength).ToString.Trim.ToUpper Then
                        flgCol = True
                        Exit For
                    End If
                Next
                If flgCol Then
                    Continue For
                End If

                strOutput(0, intCol) = CStr(dgView.Columns(intCol).HeaderText.Trim)
                intColDisp = intColDisp + 1
            Next

            '****For Records(Adding record text)
            For intRow As Integer = 0 To dgView.RowCount - 1
                intColDisp = 0
                For intCol As Integer = 0 To dgView.ColumnCount - 1
                    flgCol = False
                    For iArrLength As Integer = 0 To strSkippedCol.Length - 1
                        If dgView.Columns(intCol).Name.Trim.ToUpper = strSkippedCol.GetValue(iArrLength).ToString.Trim.ToUpper Then
                            flgCol = True
                            Exit For
                        End If
                    Next

                    If flgCol Then
                        Continue For
                    End If

                    strOutput(intRow + 1, intCol) = CStr(dgView.Item(intCol, intRow).Value.ToString.Trim)
                    intColDisp = intColDisp + 1

                    'End If
                Next
            Next

            xlWorkSheet.Range("A1").Resize(dgView.RowCount + 1, dgView.ColumnCount).Value = strOutput

            xlWorkBook.SaveAs(strFileName)
            xlWorkBook.Close()
            xlApp.Quit()
            ReleaseObjects(xlApp)
            ReleaseObjects(xlWorkBook)
            ReleaseObjects(xlWorkSheet)
            ReleaseObjects(MissValue)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub



Это весь мой код ,Пожалуйста, помогите мне

Что я уже пробовал:

Я попробовал добавить
xlWorkBook = xlApp.Workbooks.Add()

Jochen Arndt

Вероятно, это не источник вашей проблемы, но следует отметить:
Вы создаете два экземпляра Excel.

Удалите "Новый" из
Dim xlApp As New Excel.Application

snehalpawar

же ошибку на одной линии :(

Jochen Arndt

Я не ожидал, что это решит проблему, но подумал, что это следует отметить.

Однако смотрите мое тем временем опубликованное решение.

CHill60

Вы получили ту же ошибку, когда использовали

xlApp.Workbooks.Add()

snehalpawar

да

2 Ответов

Рейтинг:
0

Jochen Arndt

Вы уверены, что ошибка возникает при добавлении книги?

Я предполагаю, что это происходит при добавлении листа с

xlWorkSheet = xlWorkBook.Sheets.Add("Sheet1")
Первый параметр указывает лист, перед которым добавляется новый лист (см. Рабочий лист.Добавить метод (Microsoft.Офис.Взаимодействие.Превосходить)[^]). Но если нет листа с именем "Sheet1", вызов завершится ошибкой 0x800A03EC (NAME_NOT_FOUND).

Воспользуйся
xlWorkSheet = xlWorkBook.Sheets.Add()
вместо.


Maciej Los

Ястребиный глаз!

snehalpawar

да, ошибка находится на "xlWorkBook = xlApp.Workbooks.Добавьте(MissValue)" эта строка,она не идет на 2-ю строку, то есть "xlWorkSheet = xlWorkBook.Листы.Добавить("Лист1")"

Jochen Arndt

Вы пробовали вызывать обе функции без параметров?

xlWorkBook = xlApp.Workbooks.Добавь()
xlWorkSheet = xlWorkBook.Листы.Добавить()

Как было отмечено в моем решении, ошибка-NAME_NOT_FOUND. Так что он должен исчезнуть, когда не проходит никакого имени.

Рейтинг:
0

Maciej Los

Рабочая тетрадь.Добавить метод (Microsoft.Офис.Взаимодействие.Превосходить)[^] не требует параметра, если только вы не хотите создать новую книгу из шаблона.
Это тоже должно сработать:

xlWorkBook  = xlApp.Workbooks.Add()


Для получения более подробной информации, пожалуйста, смотрите:
Как программно создавать новые книги[^]


snehalpawar

извините ,я попробовал это сделать, но та же ошибка