簡體   English   中英

將工作表從一個復制並粘貼到另一個

[英]Copy and paste worksheet from one to another

我有2個不同的excel文件,如下所示:

  1. Report.csv
  2. Report.Xlsm

這兩個文件的工作表名稱均為“報告”

我需要一個VBA腳本才能從MsAccess中執行此操作。

我需要從Report.csv復制“報表”表,並用Report.xlsm中的“報表”表替換它,然后保存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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM