我有一个范围(在不同的工作簿中),我希望将值,格式和图片复制到不同的范围(带有vba scipts的活动工作簿) . 复制/粘贴多次出现,最多50次(每页最多50页,每页一页) . 我已经开始使用xlPasteValues和xlPasteFormats,预先复制了50个范围内的图片(图片相同,每个范围的相同位置重复) . 工作簿需要一些空间,我想通过复制图片来修剪其基本大小,而不是使用大多数未使用的50个预先复制的集合 .
之前的代码看起来像这样(不复制图片 - 我曾经复制过所有图片,但这会占用空间):
Set rngImportCopyRange = Range(wksImportedPeakHour.Cells(1, 1), wksImportedPeakHour.Cells(65, 34))
rngImportCopyRange.Copy
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
rngImportCopyRange.Copy
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
其中“wksImportedPeakHour”是具有被复制范围的工作表(始终在同一位置,数据在右边的列中,我不想要)和“intRowStartHere”是一个整数,用于跟踪要粘贴的行的位置范围 .
我尝试在xlPasteFormats之前添加“Application.CopyObjectsWithCells = True”,但尝试这样做时出错 .
使用以下代码进行直接复制/粘贴会复制所有内容,但是其他工作簿的公式也会被复制而不是值(不正常):
rngImportCopyRange.Copy wksStartHere.Cells(intRowStartHere, 1)
现在,我可以复制所有内容,然后取消合并单元格(有些单元格合并,合并时无法粘贴特殊的xlPasteValues),然后粘贴值,然后粘贴公式 - 如下所示:
Set rngImportCopyRange = Range(wksImportedPeakHour.Cells(1, 1), wksImportedPeakHour.Cells(65, 34))
rngImportCopyRange.Copy wksStartHere.Cells(intRowStartHere, 1)
Set rngUnMerge = Range(wksStartHere.Cells(intRowStartHere, 1), wksStartHere.Cells(intRowStartHere + 64, 34))
rngUnMerge.UnMerge
rngImportCopyRange.Copy
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
rngImportCopyRange.Copy
wksStartHere.Cells(intRowStartHere, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
但具有上述功能是三次复制/粘贴操作和不合并 . 我希望有一些特殊的操作或技巧,允许脚本不运行,只要它运行 . 感谢您的帮助,谢谢!