![](/img/trans.png)
[英]Best Practices to handle multiple open workbooks in an Excel VSTO add-in
[英]How to create an Excel Sheet and Add it to Multiple WorkBooks in Excel InterOp
我一直遵循以下模式使用Excel InterOp創建多個工作表和多個工作簿。 現在,我需要創建一個稱為主工作簿的工作簿,其中將包含我在原始工作簿中創建的工作表中的一些工作表。 僅舉一個例子,假設WorkBook1具有Sheet1和Sheet2,而Workbook2具有sheet3和sheet4。 我希望主工作簿具有Sheet1和Sheet3。 我正在尋找一種方法來創建我一直在為WorkBook1和WorkBook2創建的工作表(sheet1,sheet2,sheet3,sheet4),但是還要以最少的代碼重復次數將sheet1和sheet3添加到Master工作簿中。 任何幫助將不勝感激。
For i = 1 To 10
Dim xlApp As Application = New Application
Dim xlWorkBook As Workbook
xlWorkBook = xlApp.Workbooks.Add
Dim xlWorkSheet As Worksheet
Dim xlSheets As Sheets = xlWorkBook.Sheets
Dim xlNewSheet As Worksheet
Dim sheetCount As Integer = 1
' So I repeat the following block to add multiple sheets with different content to a WorkBook
xlNewSheet = xlSheets.Add(xlSheets(sheetCount), Type.Missing, Type.Missing, Type.Missing)
sheetCount += 1
xlNewSheet.Name = SomeName
xlWorkSheet = xlWorkBook.Sheets(SomeName)
AddContentToSheet(xlNewSheet) ' A Sub that adds real content to the sheet
.
.
.
.
xlWorkBook.SaveAs(...)
xlWorkBook.Close()
xlApp.Quit()
Next i
所以現在,我的問題是,如果我有我的主工作簿:
Dim MasterWorkBook As Workbook
MasterWorkBook = xlApp.Workbooks.Add
在重復10次以創建10個不同WorkBook的循環之前定義。 如何以最少的代碼重復量將選擇的工作表添加到MasterWorkBook。
Dim xlApp As Application = New Application
Dim masterWb As Workbook
masterWb = xlApp.Workbooks.Add
For i = 1 To 3
Dim xlWorkBook As Workbook
xlWorkBook = xlApp.Workbooks.Add
Dim ws As Worksheet
'Dim xlSheets As Sheets = xlWorkBook.Sheets
'Dim xlNewSheet As Worksheet
For j = 1 To 2
Try
ws = xlWorkBook.Sheets.Add(, xlWorkBook.Sheets(xlWorkBook.Sheets.Count))
ws.Name = i + j
AddContentToSheet(ws)
If j = 1 Then
ws.Copy(, masterWb.Sheets(masterWb.Sheets.Count))
End If
Catch
ws = Nothing
xlWorkBook.Close()
xlWorkBook = Nothing
xlApp.Quit()
xlApp = Nothing
Console.WriteLine("error")
Exit Sub
End Try
Next j
'AddContentToSheet(xlNewSheet) ' A Sub that adds real content to the sheet
ws = Nothing
xlWorkBook.SaveAs("C:\Users\Documents\Visual Studio 2008\Project\" + Str(i) + ".xlsx")
xlWorkBook.Close()
xlWorkBook = Nothing
Next i
masterWb.Sheets("Sheet1").Delete()
masterWb.Sheets("Sheet2").Delete()
masterWb.Sheets("Sheet3").Delete()
masterWb.SaveAs("C:\Users\Documents\Visual Studio 2008\Project\master.xlsx")
masterWb.Close()
masterWb = Nothing
xlApp.Quit()
xlApp = Nothing
End Sub
Sub AddContentToSheet(ByVal a As Worksheet)
a.Cells(1, 1) = "abc"
a.Cells(1, 2) = "abc"
End Sub
該代碼創建3個工作簿,並在每個工作簿的末尾添加2個工作表。 並將第一個添加的工作表從每個工作簿復制到主工作簿。 並記住使用后釋放對象引用。 希望能幫助到你:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.