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

时间:2015-04-16 14:09:46

标签: excel vba ms-access

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

  1. Report.csv
  2. Report.Xlsm
  3. 两个文件都有一个工作表名称“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
    

2 个答案:

答案 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