正如@CLR已經提到的,你需要打開一個工作簿片粘貼到其中。
類似下面的內容可以工作,但請注意,這只是一個示例,並不是一個完整的工作解決方案。
您仍然至少需要實現一個適當的錯誤處理...
- 捕獲錯誤,同時打開工作簿,它是受保護的(因爲另一個用戶已打開)或錯誤的文件/路徑。
- 在重命名工作表時捕獲錯誤,因爲名稱必須是唯一的。重新使用現有名稱將會引發錯誤。
如果發生錯誤,不執行錯誤處理可能會導致未確定的條件。
Option Explicit 'first line in your module forces correct variable declare.
Public Sub Graph()
Application.ScreenUpdating = False 'Disable screenupdating
'Open destination workbook
Dim DestWorkbook As Workbook
Set DestWorkbook = Workbooks.Open(Filename:="C:\YourPathHere\Workbook2.xlsx")
With DestWorkbook
'Copy ActiveSheet
ThisWorkbook.ActiveSheet.Copy After:=.Sheets(.Sheets.Count)
'Instead of copying the ActiveSheet I recommend to copy a specific sheet by name
'ThisWorkbook.Worksheets("YourSourceSheetName").Copy After:=.Sheets(.Sheets.Count)
'Rename last sheet (the one we inserted above)
.Sheets(.Sheets.Count).Name = "04 08 2017"
'Close and save workbook2
.Close SaveChanges:=True
End With
Application.ScreenUpdating = True 'Enable screenupdating
End Sub
你** **將需要以添加一些內容,打開工作簿2。您可能會考慮以不可見的方式打開它,添加頁面然後關閉它,但不得不打開它。 – CLR
而不是剪切和粘貼,您可以使用worksheet.copy複製整個工作表。無論如何,正如CLR所說,無論如何您都必須打開目標工作簿(或創建一個新工作簿)。 – FunThomas
另外,您可以在工作表級別進行復制,而不是在單元/範圍級別更高效。在以下位置錄製一個宏:打開工作簿2,然後將工作表1從工作簿1移動/複製到工作簿2,重命名該選項卡,然後關閉並保存工作簿2.這將爲您提供所需的大綱代碼,然後您可以將行添加到關閉/屏幕更新等。 – CLR