【问题标题】:Copy all used cells from one workbook sheet to another existing workbook sheet将所有使用的单元格从一个工作簿表复制到另一个现有工作簿表
【发布时间】:2017-08-25 00:50:36
【问题描述】:

我正在尝试使用 VBA 将 Excel 工作表中所有使用的单元格从已关闭的工作簿复制到当前工作簿中已创建的工作表中。

已经看到很多将工作表复制为新工作表的示例,而不仅仅是将使用过的内容复制到现有工作表中。

谢谢! 迈克

【问题讨论】:

标签: vba excel


【解决方案1】:
  1. 打开源工作簿,使用: set wb = Workbooks.Open FileName:="fullPathAndFileName.xlsx", UpdateLinks:=0, ReadOnly:=True, AddToMru:=False
  2. 使用对要复制的工作表的引用,例如wb.Sheets(1)(指工作簿中的第一张工作表),以及对目标工作表的引用,例如。 destWorkSheet 运行这样的循环:

    For Each cel in wb.Sheets(1).UsedRange.Cells
        destWorkSheet.Cells(cel.Row, cel.Column) = cel
    Next
    

这会将值逐个单元格地复制到目标工作表中与源工作表中相同的位置。您可能想先关闭计算。当然还有其他方法可以做到这一点。

您仍然需要打开源工作簿,但另一种方法是直接写入值。只要目标和源范围的大小和形状相同,您就可以执行此操作。这个子程序会为你做:

    Private Sub CopyValuesSourceToDest(src As Range, dest As Range)
    'dest should be one cell, src can be a range of cells
    If dest.Cells.Count <> 1 Then MsgBox "Only pass one cell as the destination.": Exit Sub
    Dim rws As Long, cols As Long, trueDest As Range
    rws = src.Rows.Count
    cols = src.Columns.Count
    Set trueDest = dest.Parent.Range(dest.Cells(1, 1), dest.Cells(1, 1).Offset(rws - 1, cols - 1))
    trueDest.Value = src.Value
    End Sub

然后你会像这样调用 sub:

    CopyValuesSourceToDest sourceSheet.UsedRange, destSheet.Range("B7") 'B7, or whatever

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多