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。

第一种方式

  1. 复制 sheet
    1. 将所需名称保存为变量
    2. 删除你要删除的sheet
    3. 使用先前存储的名称变量重命名您复制的 sheet。

你身体上不能'overwrite a sheet'。

第二种方式

你也可以换一种方式:

  1. 删除目标 sheet 中的所有内容,如下所示:

    ThisWorkbook.Worksheets("TestTestDestination").Cells.Clear
    
  2. 将所有内容从源 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