簡體   English   中英

如何在Excel InterOp中創建Excel工作表並將其添加到多個工作簿

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM