将工作表从一个复制粘贴到另一个
我有两个不同的Excel文件,如下所示:
- Report.csv
- 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