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
1 回答
使用以下命令打开源工作簿:
set wb = Workbooks.Open FileName:="fullPathAndFileName.xlsx", UpdateLinks:=0, ReadOnly:=True, AddToMru:=False
使用对要复制的工作表的引用,例如,
wb.Sheets(1)
(指工作簿中的第一个工作表),以及对目标工作表的引用,例如 .destWorkSheet
运行这样的循环:这将逐个单元格将值复制到目标工作表中与源工作表中相同的位置 . 您可能希望先关闭计算 . 当然还有其他方法可以做到这一点 .
您仍然需要打开源工作簿,但另一种方法是直接写入值 . 只要目标和源范围具有相同的大小和形状,就可以执行此操作 . 这个子程序将为您完成:
然后你会像这样调用sub: