我正在尝试在单个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
答案 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
个对象。