copy/overwrite sheet 来自另一个工作簿
copy/overwrite sheet from another workbook
我想从另一个工作簿复制一个 sheet,同时覆盖现有的 sheet。
我可以复制 sheet 但它会创建一个新的。目标工作簿包含其他 sheets,它们正在使用 wb_target 中已有的 sheet(应该被覆盖)来引用要评估的数据;所以 "delete"、"rename" 将不起作用,因为删除旧的 sheet.
后引用丢失
这里是代码:
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1
.Show
fullpath = .SelectedItems.Item(1)
End With
If InStr(fullpath, ".xls") = 0 Then
Exit Sub
End If
Workbooks.Open fullpath
Sheets("ws_source").Copy Before:=Workbooks("wb_target.xlsm").Sheets("ws_target")
newfilename = Left(fullpath, Len(fullpath) - 4) & "_new.xls"
ActiveWorkbook.SaveAs Filename:=newfilename
此代码有效,但我需要覆盖 ws_target 而不是在 wb_target 中创建 ws_source。
第一种方式
- 复制 sheet
- 将所需名称保存为变量
- 删除你要删除的sheet
- 使用先前存储的名称变量重命名您复制的 sheet。
你身体上不能'overwrite a sheet'。
第二种方式
你也可以换一种方式:
删除目标 sheet 中的所有内容,如下所示:
ThisWorkbook.Worksheets("TestTestDestination").Cells.Clear
将所有内容从源 sheet 复制到目标 sheet
Sub test_copy_sheet_overwrite()
Dim arr1()
' Copies the source sheet's contents into an array
arr1() = ThisWorkbook.Worksheets("TestTestsource").UsedRange.Value
' Pastes the array into the destination sheet
ThisWorkbook.Worksheets("TestTestDestination").Cells(1, 1).Resize(UBound(arr1, 1), UBound(arr1, 2)) = arr1()
End Sub
我想从另一个工作簿复制一个 sheet,同时覆盖现有的 sheet。
我可以复制 sheet 但它会创建一个新的。目标工作簿包含其他 sheets,它们正在使用 wb_target 中已有的 sheet(应该被覆盖)来引用要评估的数据;所以 "delete"、"rename" 将不起作用,因为删除旧的 sheet.
后引用丢失这里是代码:
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1
.Show
fullpath = .SelectedItems.Item(1)
End With
If InStr(fullpath, ".xls") = 0 Then
Exit Sub
End If
Workbooks.Open fullpath
Sheets("ws_source").Copy Before:=Workbooks("wb_target.xlsm").Sheets("ws_target")
newfilename = Left(fullpath, Len(fullpath) - 4) & "_new.xls"
ActiveWorkbook.SaveAs Filename:=newfilename
此代码有效,但我需要覆盖 ws_target 而不是在 wb_target 中创建 ws_source。
第一种方式
- 复制 sheet
- 将所需名称保存为变量
- 删除你要删除的sheet
- 使用先前存储的名称变量重命名您复制的 sheet。
你身体上不能'overwrite a sheet'。
第二种方式
你也可以换一种方式:
删除目标 sheet 中的所有内容,如下所示:
ThisWorkbook.Worksheets("TestTestDestination").Cells.Clear
将所有内容从源 sheet 复制到目标 sheet
Sub test_copy_sheet_overwrite() Dim arr1() ' Copies the source sheet's contents into an array arr1() = ThisWorkbook.Worksheets("TestTestsource").UsedRange.Value ' Pastes the array into the destination sheet ThisWorkbook.Worksheets("TestTestDestination").Cells(1, 1).Resize(UBound(arr1, 1), UBound(arr1, 2)) = arr1() End Sub