将工作表从一个复制粘贴到另一个

我有两个不同的Excel文件,如下所示:

  1. Report.csv
  2. Report.Xlsm

两个文件都有一个工作表名称“报告”

我需要一个vba脚本来从MsAccess这样做。

我需要复制Report.csv中的“Report”表格,并将其replace为Report.xlsm中的“Report”表格,然后保存xlsm文件。 另外,需要退出应用程序。 下面的代码是做这个工作,除了没有取代“报告”表。

Private Sub CopyPaste() Dim CopyFrom As Object Dim CopyTo As Object ' Workbook Dim CopyThis As Object Dim xl As Object 'New Excel.Application Set xl = CreateObject("Excel.Application") xl.Visible = True Set CopyFrom = xl.Workbooks.Open("C:\Users\me\desktop\report.csv") Set CopyThis = CopyFrom.Sheets(1) ''Sheet number 1 Set CopyTo = xl.Workbooks.Open("C:\users\me\desktop\Report.xlsm") CopyThis.Copy After:=CopyTo.Sheets(CopyTo.Sheets.Count) CopyFrom.Close True CopyTo.Save CopyTo.Close True xl.Quit End Sub 

干得好。 粘贴这个,看看:

 Sub CopyPaste() Dim CopyFrom As Object Dim CopyTo As Object ' Workbook Dim CopyThis As Object Dim xl As Object 'New Excel.Application Set xl = CreateObject("Excel.Application") xl.Visible = True Set CopyFrom = xl.Workbooks.Open("C:\Users\me\desktop\report.csv") Set CopyThis = CopyFrom.Sheets(1) ''Sheet number 1 Set CopyTo = xl.Workbooks.Open("C:\users\me\desktop\Report.xlsm") CopyThis.Copy After:=CopyTo.Sheets(CopyTo.Sheets.Count) 'Start of new code added xl.DisplayAlerts = False CopyTo.Sheets(1).Delete 'deletes the sheet that was initially there xl.DisplayAlerts = True CopyTo.Sheets(1).Name = "report" 'now the copied sheet has the index of 1 'End of new code added CopyFrom.Close True CopyTo.Save CopyTo.Close True xl.Quit End Sub 

尝试这个 :

 Private Sub CopyPaste() Dim CopyFrom As Object Dim CopyTo As Object ' Workbook Dim CopyThis As Object Dim xl As Object 'New Excel.Application Set xl = CreateObject("Excel.Application") xl.Visible = True Set CopyFrom = xl.Workbooks.Open("C:\Users\me\desktop\report.csv") Set CopyThis = CopyFrom.Sheets("Report") ''Sheet number is ok if it never move, name may be safer Set CopyTo = xl.Workbooks.Open("C:\users\me\desktop\Report.xlsm") xl.Application.DisplayAlerts = False CopyTo.sheets("Report").Delete xl.Application.DisplayAlerts = True CopyThis.Copy After:=CopyTo.Sheets(CopyTo.Sheets.Count) CopyFrom.Close True CopyTo.Save CopyTo.Close True xl.Quit End Sub