我有两个不同的excel文件,如下所示:
两个文件都有一个工作表名称“Report”
我需要一个vba脚本来从MsAccess执行此操作。
我需要从Report.csv复制“Report”表并将其替换为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
答案 0 :(得分:1)
你走了。粘贴此内容并查看:
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
答案 1 :(得分:0)
试试这个:
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