将Excel工作表复制到新工作簿中 [英] Copy excel sheet into new workbook

查看:353
本文介绍了将Excel工作表复制到新工作簿中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张带有多张工作表的excel工作簿,并希望将每张工作表写在单独的工作簿中,为此我使用下面给出的代码,但是它写了一张空白页......



请帮助一个人

谢谢





 < span class =code-keyword> Dim  MainWorkbook  As  Excel.Workbook 
Dim Filepath As String
Private Sub btnbrows_Click( ByVal sender As 系统。对象 ByVal e 作为系统.EventArgs)句柄 btnbrows.Click
Dim ExcelObj 作为 Exc el.Application
ExcelObj = Excel.Application
OpenFileDialog1.Title = 选择要导入员工的Xls文件
' OpenFileDialog1.Filter =xls Files | * .xlsx
如果 OpenFileDialog1.ShowDialog()= Windows.Forms.DialogResult.OK 然后
Filepath = OpenFileDialog1.FileName
MainWorkbook = ExcelObj.Workbooks.Open(OpenFileDialog1.FileName,Type.Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing)
结束 如果
结束 Sub
私有 Sub Button1_Click( ByVal sender 作为系统。对象 ByVal e As System.EventArgs)句柄 btnSave.Click
Dim Objexcel 作为 Excel.Application
Dim theWorkbook As Excel.Workbook
Dim theWorksheet 作为 Excel.Worksheet
对于 每个 excelsht 作为 Excel.Worksheet MainWorkbook.Sheets
theWorkbook = Objexcel.Workbooks.Add()
theWorksheet = theWorkbook.Sheets( SHEET1
theWorksheet = excelsht
theWorkbook.SaveAs( D:\New Folder \ + excelsht.Name)
Next
System.Runtime.InteropServices.Marshal.ReleaseComObject(theWorkbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(MainWorkbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(theWorksheet)
Objexcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(Objexcel)
theWorksheet = Nothing
theWorkbook = Nothing
MainWorkbook = Nothing
Objexcel = Nothing
MessageBox.Show( DONE !!
结束 Sub

解决方案

试试这个:

 对于 每个 excelsht 作为 Excel.Worksheet  MainWorkbook.Worksheets 
excelsht.Copy()' copy工作表
theWorksheet = Objexcel.ActiveSheet
theWorkbook = theWorksheet.Parent
theWorkbook.SaveAs( String 。 Concat( D:\New Folder \,excelsht.Name, 。xlsx))
下一页





参见 Worksheet.Copy Method(Excel) [ ^ ]





如果父级 [ ^ ]不起作用,试试这个:



 对于 每个 excelsht 作为 Excel.Worksheet  MainWorkbook.Worksheets 
theWorkbook = Objexcel.Workbooks.Add()
theWorksheet = theWorkbook.Worksheets( 1
excelsht.Copy(之前:= theWorkbook.Worksheets(theWorksheet))' 将工作表复制到新工作簿中
theWorkbook.SaveAs( String .Concat( D:\New Folder \,excelsht.Name, 。xlsx))
下一页


I have a excel workbook with multiple sheets and want to write each sheet in separate work book, for this i am using code given below BUT its writing a Blank Sheet..

Please Help Some One
Thanks


Dim MainWorkbook As Excel.Workbook
Dim Filepath As String
Private Sub btnbrows_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnbrows.Click
    Dim ExcelObj As Excel.Application
    ExcelObj = New Excel.Application
    OpenFileDialog1.Title = "Select Xls File To Import Employee"
    'OpenFileDialog1.Filter = "xls Files|*.xlsx"
    If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
        Filepath = OpenFileDialog1.FileName
        MainWorkbook = ExcelObj.Workbooks.Open(OpenFileDialog1.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
    End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Dim Objexcel As New Excel.Application
    Dim theWorkbook As Excel.Workbook
    Dim theWorksheet As Excel.Worksheet
    For Each excelsht As Excel.Worksheet In MainWorkbook.Sheets
        theWorkbook = Objexcel.Workbooks.Add()
        theWorksheet = theWorkbook.Sheets("SHEET1")
        theWorksheet = excelsht
        theWorkbook.SaveAs("D:\New Folder\" + excelsht.Name)
    Next
    System.Runtime.InteropServices.Marshal.ReleaseComObject(theWorkbook)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(MainWorkbook)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(theWorksheet)
    Objexcel.Quit()
    System.Runtime.InteropServices.Marshal.ReleaseComObject(Objexcel)
    theWorksheet = Nothing
    theWorkbook = Nothing
    MainWorkbook = Nothing
    Objexcel = Nothing
    MessageBox.Show("DONE !!")
End Sub

解决方案

Try this:

For Each excelsht As Excel.Worksheet In MainWorkbook.Worksheets
    excelsht.Copy() 'copy sheet into new workbook
    theWorksheet = Objexcel.ActiveSheet
    theWorkbook = theWorksheet.Parent
    theWorkbook.SaveAs(String.Concat("D:\New Folder\", excelsht.Name, ".xlsx"))
Next



See Worksheet.Copy Method (Excel)[^]

[EDIT]
If Parent[^] won't work, try this:

For Each excelsht As Excel.Worksheet In MainWorkbook.Worksheets
    theWorkbook = Objexcel.Workbooks.Add()
    theWorksheet = theWorkbook.Worksheets(1)
    excelsht.Copy(Before:=theWorkbook.Worksheets(theWorksheet)) 'copy sheet into new workbook
    theWorkbook.SaveAs(String.Concat("D:\New Folder\", excelsht.Name, ".xlsx"))
Next


这篇关于将Excel工作表复制到新工作簿中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆