2017-01-31 175 views
1

我试图创建一个Excel文件中的多个电子表格和我得到以下错误:创建多个Excel电子表格

Public member 'workbook' on type 'Application class

这是我的代码:

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 

回答

0

的问题是,工作簿(在您的代码中:... = CType(xlApp.Workbook ...)不是Excel应用程序对象的属性。因此,您会得到以下异常:

“公共部件类型‘工作簿’“ApplicationClass找不到。”

尝试......

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 

您可能不需要逻辑添加一个新的工作簿时,存在无如果”保证你的Excel应用程序对象肯定至少有一个工作簿。

这应该解决您报告的异常并在Excel工作簿中生成新的实例化“工作表”对象。

+0

谢谢伟大的作品。 – user3207693

0

如果你想多Sheets添加到您的Excel Workbook这是代码做到这一点:

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) 

缺省情况下Workbook带有一个Sheet。如果要添加多个参数Count:=。正如你在我的例子中看到的,我使用了。这将使我与11 Sheets一起工作。

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

如果你想与每个Worksheet工作,那么你就需要看看下面的代码:

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.

稍微注意。你不需要xlApp = CreateObject("Excel.Application")。由于您已经在使用Excel对象,因此请使用Dim xlApp As New Excel.Application

+0

谢谢伟大的作品。 – user3207693