2017-01-31 4 views
1

Ich versuche, mehrere Tabellen in einer einzigen Excel-Datei, und ich bekomme die folgende Fehlermeldung zu erzeugen:Erstellen Sie mehr Excel-Tabellen

Public member 'workbook' on type 'Application class

Dies ist mein Code:

Private Sub MakeExcelWorksheets_Click(sender As Object, e As EventArgs) Handles MakeExcelWorksheets.Click 
    Dim xlApp As Excel.Application 
    xlApp = CreateObject("Excel.Application") 
    Dim newWorksheet As Excel.Worksheet 

    Try 
     newWorksheet = CType(xlApp.Workbook.Worksheets.Add(), Excel.Worksheet) 

    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
     Exit Sub 
    End Try 

End Sub 

Antwort

0

Das Problem ist, dass Arbeitsmappe (in Ihrem Code: ... = CType (xlApp.Workbook. ...) ist keine Eigenschaft des Excel-Anwendungsobjekts. Deshalb erhalten Sie die Ausnahme:

„Public Mitglied‚Arbeitsmappe‘vom Typ‚ApplicationClass‘nicht gefunden.“

Try this ...

Imports Microsoft.Office.Interop 
    Imports Microsoft.VisualBasic.Interaction 

    Private Sub MakeExcelWorksheets_Click(sender As Object, e As EventArgs) Handles MakeExcelWorksheets.Click 
     Dim xlApp As Excel.Application 
     xlApp = DirectCast(CreateObject("Excel.Application"), Excel.Application) 
     Dim newWorksheet As Excel.Worksheet 
     Dim newWorkBook As Excel.Workbook 

     Try 
      'newWorksheet = CType(xlApp.Workbook.Worksheets.Add(), Excel.Worksheet) 
      If xlApp.Workbooks.Count > 0 Then 
       newWorkBook = DirectCast(xlApp.Workbooks(1), Excel.Workbook) 
      Else 
       newWorkBook = DirectCast(xlApp.Workbooks.Add(), Excel.Workbook) 
      End If 
      newWorksheet = DirectCast(newWorkBook.Sheets.Add(), Excel.Worksheet) 

     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
      Exit Sub 
     End Try 

    End Sub 

Sie nicht die Logik benötigen Sie eine neue Arbeitsmappe hinzuzufügen, wenn keine, wenn Sie existiert‘ Re garantiert, dass Ihr Excel-Anwendungsobjekt definitiv über mindestens eine Arbeitsmappe verfügt.

Dies sollte die von Ihnen gemeldete Ausnahme auflösen und ein neues instanziiertes "Worksheet" -Objekt in der Excel-Arbeitsmappe erzeugen.

+0

Danke funktioniert super. – user3207693

0

Wenn Sie mehrere Sheets zu Ihrem Excel hinzufügen möchten Workbook Dies ist der Code zu tun, dass:

Dim app As New Excel.Application 
Dim wb As Excel.Workbook = app.Workbooks.Add() 
Dim ws As Excel.Worksheet 

ws = CType(wb.Sheets.Add(Count:=10), Excel.Worksheet) 

standardmäßig ein Workbook mit einem Sheet kommt. Wenn Sie mehr als einen Parameter hinzufügen möchten, setzen Sie den Parameter Count:=. Wie Sie in meinem Beispiel sehen können, habe ich verwendet. Dies wird mich mit 11 Sheets arbeiten lassen.

Note that ws will now be the last sheet in the Workbook . In my example this would be Sheet11.

Wenn Sie mit jedem Worksheet arbeiten wollen, dann müssen Sie auf dem folgenden Code aussehen:

Dim ws1 As Excel.Worksheet = CType(wb.Sheets(1), Excel.Worksheet) 
Dim ws2 As Excel.Worksheet = CType(wb.Sheets.Add(), Excel.Worksheet) 

Note that ws1 references to the first sheet. As said above a Workbook by default comes with one sheet.

leichte Note. Sie brauchen xlApp = CreateObject("Excel.Application") nicht. Verwenden Sie stattdessen Dim xlApp As New Excel.Application, da Sie bereits mit den Objekten Excel arbeiten.

+0

Danke funktioniert super. – user3207693

Verwandte Themen