2017-02-03 7 views
0

Я пытаюсь создать Workbook с несколькими листами в Excel, но я не могу понять, как создать несколько листов. Я могу создать его просто отлично, но когда я пытаюсь создать вторую запись, я получаю сообщение об ошибке.Добавление листа в книгу Excel

Dim app As Application = New Application 
Dim xlApp As New Excel.Application 
Dim xlWorkBook As Excel.Workbook 
Dim newXlApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application 
Dim newXlWorkbook As Excel.Workbook 
Dim newXlSheet As Excel.Worksheet 
Dim newXlSheet2 As Excel.Worksheet 

Public Sub createWorkBook() 
    newXlWorkbook = newXlApp.Workbooks.Add() 

    newXlSheet = newXlWorkbook.Sheets("Sheet1") 
    newXlSheet2 = newXlWorkbook.Sheets.Add("Sheet2") 

    newXlSheet.Cells(1, 1) = "Task ID" 
    newXlSheet.Cells(1, 2) = "Collective Tasks" 
    newXlSheet.Cells(1, 3) = "Supported Task" 

    newXlSheet2.Cells(1, 1) = "Parent Collective Task" 
    newXlSheet2.Cells(1, 2) = "Individual Task" 
End Sub 

Я не уверен, если это имеет значение или нет, но у меня также есть отдельный Excel Workbook открытым, что я запрашивая.

+0

Какая ошибка в строке? Кажется, вы добавляете только один лист в свой код. – SJR

+0

@sjr 'newXlSheet2 = newXlWorkbook.Sheets.Add (« Sheet2 »)' throws 'Необработанное исключение типа 'System.Runtime.InteropServices.COMException' произошло' – Bob

+0

@Bob, если это не VBA, тогда удалите связанные с VBA теги – user3598756

ответ

2

Из того, что я могу увидеть ошибку ваш код дает будет:

Первый шанс исключение типа «System.Runtime.InteropServices.COMException»

Если вы хотите добавить несколько листов к вашей 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 поставляется с на e Sheet. Если вы хотите добавить более одного набора Count:= parameter. Как вы можете видеть в моем примере, я использовал . Это оставит меня с 11 таблицами для работы.

Отметьте, что 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.Cells(1, 1) = "Task ID" 
ws1.Cells(1, 2) = "Collective Tasks" 
ws1.Cells(1, 3) = "Supported Task" 

ws2.Cells(1, 1) = "Parent Collective Task" 
ws2.Cells(1, 2) = "Individual Task" 

Обратите внимание, что ws1 ссылки на первый лист. Как указано выше, Workbook по умолчанию поставляется с одним листом.

+0

@Bob расширенный ответ. – Bugs

+1

Ahhhh gotcha, будет принимать :) – Bob