【问题标题】:How to export Excel worksheets into new workbooks如何将 Excel 工作表导出到新工作簿中
【发布时间】:2009-05-08 15:13:15
【问题描述】:

我有一堆包含多个工作表的 Excel 工作簿。我想遍历每个工作簿并将每个工作表导出到它自己的新工作簿中。我希望每个新工作簿中都有一个工作表。

这是我目前所得到的:

   Sub ExportWorksheet(ByVal worksheet As Excel.Worksheet, ByVal filePath As String)
      Dim xlApp As Excel.Application = New Excel.ApplicationClass
      Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Add
      worksheet.Select()
      worksheet.Copy()
      xlWorkBook.Worksheets.Add()
      worksheet.Paste(Destination:=xlWorkBook)

      xlWorkBook.SaveAs(Filename:=filePath)

      xlWorkBook.Close(False)
      xlApp.Quit()
   End Sub

【问题讨论】:

  • 这适用于一个工作表吗?
  • 没有。我在粘贴位上收到错误: System.Runtime.InteropServices.COMException 未处理 ErrorCode=-2146827284 Message="Exception from HRESULT: 0x800A03EC" Source="Microsoft.Office.Interop.Excel"

标签: c# .net vb.net excel


【解决方案1】:

在 Excel 中,这将通过将工作表复制到新工作簿来完成,而不是通过创建新工作簿然后将工作表添加到其中来完成。这是通过使用Worksheet.Copy 来实现的,而无需指定要在工作簿中放置复制的工作表的位置。

更多阅读:http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.copy(VS.80).aspx

【讨论】:

  • 如何使用新工作表访问新创建的工作簿?
  • 不错的答案 Lunatik +1。 Gern,你提出了一个很好的观点。您必须按名称访问工作簿......这将自动生成。 Worksheet.SaveAs(string) 方法有一个类似的问题,即您无法直接获取工作簿引用——但在这种情况下,您至少知道工作簿名称。因此,只要您愿意(或想要)保存工作簿,那么 SaveAs 方法会更好一些。
  • 只是对上面的评论,一旦你创建了新的工作簿,你可以将它引用为ActiveWorkbook,这样你就可以设置名称,或者提示用户,也许提前,通过使用GetSaveAsFilename
【解决方案2】:

哇!

worksheet.SaveAs(Filename:=filePath)

【讨论】:

  • 是的,如果您的目标最终也是保存工作簿,这也适用。不过 Lunatik 是对的,你应该给他打勾以获得正确答案。
  • 嗯.. 好吧,使用 .SaveAs(string) 与 .Copy() 相比至少有一个优势:在操作完成后,您至少会知道工作簿的名称。因此,只要愿意(或需要)保存工作簿,这种方法实际上会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
相关资源
最近更新 更多