2013-02-02 8 views
5

Ich versuche, eine Excel-Datei von VB.net von meinem ersten Mal zu erstellen. Ich habe bereits die Microsoft.Office.Excel Referenz, Import der Microsoft.Office.InteropExcel mit VB.NET (Ausnahme von HRESULT: 0x8002000B (DISP_E_BADINDEX))

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 

Der Fehler generetad in der Zeile ist:

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

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

weirdly einige Blattnamen arbeiten, um zu erreichen, wenn Sie den Textnamen verwenden, aber für die Tabellennamen, die eine Ausnahme, wie oben angegeben wir werfen muss den Index verwenden. – Ruruboy

Antwort

8

Vielleicht Ihre Version von Excel nicht spricht Englisch. Und "Blatt" ist ein schmutziges Wort in der lokalen Sprache, es ist irgendwie in Englisch;) Ihr Name ist ein Hinweis, dass Englisch nicht die Standardsprache ist. Verwenden Sie den Index anstelle des Namens Unfälle wie diese zu vermeiden:

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

hhhhhhhhhhhhhhhhhhh IT Works –

2

Dies auch passieren könnte, weil

Workbook.Worksheets.Count 

kleiner ist als die Anzahl der Blätter, die Sie verwenden, je nachdem, wie Sie Ihre Excel-Einstellungen . Für mich beginnt es mit 3 Blättern, aber für einen Kollegen beginnt es mit 2 Blättern.

So können Sie rufen

Workbook.Worksheets.Add() 

die gewünschte Anzahl von Blättern

Verwandte Themen