将Excel工作簿中的工作表复制到另一个工作簿

时间:2018-03-26 11:13:59

标签: excel excel-vba visual-studio-2017 vba

以下是我从一个工作簿到另一个工作簿的复制过程的代码。 我查了很多类似的问题,但我无法做到这一点。 当我运行这两个文件打开然后我得到第三个名为book1的所有结果。然后我得到一个错误"工作表类的复制方法失败"。 我想要做的是将一般报告表从o.Book复制到xBook。 我想暂时保留这些书,直到这是正确的但我稍后会使用Xbook。 我可以帮忙解决这个问题吗?

Private Sub Button1_Click(发件人为对象,e为EventArgs)处理Button1.Click

android.R.layout.simple_spinner_item

2 个答案:

答案 0 :(得分:0)

无法添加评论,但如果VB在所有平台上都相同,那么在声明变量后你不应该Set吗?

Set MyObject = YourObject ' Assign object reference. 
Set MyObject = Nothing ' Discontinue association. 

答案 1 :(得分:0)

在所有响应之后,我开始研究这些对象设置并找到有助于解释的代码,我重构了我以前的版本,这就是我想出来的。它现在就像一个魅力。感谢大家的帮助和评论。

Private Sub Button1_Click(发件人为对象,e为EventArgs)处理Button1.Click

    Dim xlApp As Excel.Application = New Excel.Application

    Dim user As String
    Dim sourcePath As String
    Dim targetPath As String
    Dim savePath As String


    Label1.Text = "Working..."
    user = Environment.UserName
    sourcePath = "C:\Users\" + user + "\Desktop\Report\ADC Open (Dell GTIE JIRA).xls"
    targetPath = "C:\Users\" + user + "\Desktop\Report\Personal1.xlsm"
    savePath = "C:\Users\" + user + "\Desktop\Report\Report" & Format(Now(), "DD-MMM-YYYY") & ".xlsm"

    Dim wbSourceBook As Excel.Workbook = xlApp.Workbooks.Open _
        (sourcePath, ReadOnly:=False)
    Dim wbTargetBook As Excel.Workbook = xlApp.Workbooks.Open _
        (targetPath, ReadOnly:=False)

    'Excel expects to receive an array of objects that
    'represent the worksheets to be copied or moved.
    Dim oSheetsList() As Object = {"general_report"}

    wbSourceBook.Sheets(oSheetsList).Copy(Before:=wbTargetBook.Worksheets(1))

    wbSourceBook.Close(True)