创建多个Excel电子表格

时间:2017-01-31 15:38:47

标签: excel vb.net

我正在尝试在单个Excel文件中创建多个电子表格,但我收到以下错误:

  

“应用程序类

”类型的公共成员“工作簿”

这是我的代码:

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

2 个答案:

答案 0 :(得分: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工作簿中的对象。

答案 1 :(得分:0)

如果您想向Excel Sheets添加多个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:=参数。正如您在我的示例中所看到的,我使用了 10 。这将使我与Sheets合作。

  

请注意,ws现在是Workbook中的最后一张。在我的示例中,这将是 Sheet11

如果您想使用每个Worksheet,那么您需要查看以下代码:

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

请注意ws1对第一张表的引用。如上所述,默认情况下Workbook附带一张表。

轻微的注意。您不需要xlApp = CreateObject("Excel.Application")。而是使用Dim xlApp As New Excel.Application,因为您已经在处理Excel个对象。