首页 > 解决方案 > 将 Excel 工作表移动到另一个具有不同工作表名称的现有工作簿作为新工作表

问题描述

我正在尝试创建一个 Vb 脚本以将 Excel 工作表复制/移动到另一个工作簿,因为新工作表('X' 是源工作簿'xsheet'(工作表名称应该是一个参数)是我想要复制到的工作表名称另一个名为“Y”的工作簿作为名称为“ysheet”的新工作表(工作表名称应该是一个参数)

注意:源工作簿和目标工作簿有多个工作表。

以下代码仅在源工作簿只有一张工作表时才有效。

Set objExcel1 = CreateObject("Excel.Application")
Set objExcel = CreateObject("Excel.Application")

Set objWorkbook = objExcel1.Workbooks.Open("C:\Users\x\test.xlsx")
Set objWorkbook1 = objExcel.Workbooks.Open("C:\Users\x\test1.xlsx")
objExcel.Visible = TRUE

Set objLastSheet = objWorkbook.Worksheets(1)

Set objWorksheet = objWorkbook1.Worksheets("Sheet1")

objWorksheet.Copy, objLastSheet
Set objWorksheet = objWorkbook.Worksheets("ff")

标签: excelvbscript

解决方案


忽略代码中的明显错误,这是一个带有一些背景信息的工作示例。

Option Explicit

Dim xl : Set xl = CreateObject("Excel.Application") 'start Excel
Dim wb1: Set wb1 = xl.Workbooks.Open("E:\Temp\Book1.xlsx") 'open source workbook
Dim wb2: Set wb2 = xl.Workbooks.Open("E:\Temp\Book2.xlsx") 'open target workbook

'Copy the worksheet in wb1 to the end of the sheets in wb2
'The Copy method expects Copy(before, after),
'and 'before' and 'after' are mutually exclusive
'so pass Null for the one you don't want 
'(it defaults to Before)

'I will admit that it isn't immediately obvious from documentation that
'you can actually copy to other workbooks
wb1.Sheets("SheetToCopy").Copy Null, wb2.Sheets(wb2.Sheets.Count)
'Rename it as you like afterwards
wb2.Save()
wb1.Close()
wb2.Close()
xl.Quit()
Set xl = Nothing
WScript.Quit 0

推荐阅读