6 votes

Excel avec VB.NET (Exception de HRESULT : 0x8002000B (DISP_E_BADINDEX))

J'essaie de créer un fichier Excel à partir de VB.net pour la première fois. J'ai déjà ajouté la référence Microsoft.Office.Excel, importé la référence Microsoft.Office.Interop

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim misValue As Object = System.Reflection.Missing.Value

    xlApp = New Excel.ApplicationClass
    xlWorkBook = xlApp.Workbooks.Add(misValue)
    xlWorkSheet = CType(xlWorkBook.Sheets("sheet1"), Excel.Worksheet)
    xlWorkSheet.Cells(1, 1) = "Something here"
    xlWorkSheet.SaveAs("D:\vbexcel.xlsx")

    xlWorkBook.Close()
    xlApp.Quit()
    releaseObject(xlApp)
    releaseObject(xlWorkBook)
    releaseObject(xlWorkSheet)

    MsgBox("Excel file created , you can find the file c:\")

End Sub

L'erreur générée se trouve dans la ligne :

   xlWorkSheet = CType(xlWorkBook.Sheets("sheet1"), Excel.Worksheet)

   Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

11voto

Hans Passant Points 475940

Peut-être que votre version d'Excel ne parle pas anglais. Et le mot "feuille" est un gros mot dans la langue locale, il l'est aussi en anglais ;) Votre nom indique que l'anglais n'est pas la langue par défaut. Utilisez l'index au lieu du nom pour éviter ce genre d'accident :

    xlWorkSheet = CType(xlWorkBook.Sheets(1), Excel.Worksheet)

2voto

UrsulRosu Points 152

Cela peut également être dû au fait que

Workbook.Worksheets.Count

est inférieur au nombre de feuilles que vous utilisez, selon les paramètres d'Excel. Pour moi, cela commence par 3 feuilles, mais pour un collègue, cela commence par 2 feuilles. avec 2 feuilles.

Vous pouvez donc appeler

Workbook.Worksheets.Add()

pour atteindre le nombre de feuilles souhaité

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X