VBA粘贴数据时如何保留目标单元格原有格式 仅复制数值
VBA仅复制源数据数值、保留目标表原有格式的修改方案
原来的代码用Copy方法直接指定目标区域的写法会同步复制源单元格的格式、公式、数据验证等所有属性,无法保留目标表原有格式。可以通过以下两种方式修改,实现仅传递数值的需求:
方案1:直接赋值(推荐)
直接给目标区域的Value属性赋值,不需要调用剪贴板,执行效率更高,代码如下:
Set wb = Workbooks.Open(strPath, False, True) ' 直接对应区域赋值,仅传递数值,不改动目标格式 wbMe.Sheets("input_4").Columns("A:C").Value = wb.Sheets("vintage_agr").Columns("A:C").Value wbMe.Sheets("input_4").Columns("D:D").Value = wb.Sheets("vintage_agr").Columns("H:H").Value wbMe.Sheets("strona 3").Range("E16:G19").Value = wb.Sheets("analityka_id-tabele").Range("E68:G71").Value wbMe.Sheets("strona 3").Range("E15:G15").Value = wb.Sheets("analityka_id-tabele").Range("E72:G72").Value wb.Close False Set wb = Nothing Beep MsgBox "Mamy to" End Sub
注意:赋值时需要保证源区域和目标区域的行列数完全一致,否则会出现值错位的问题。
方案2:粘贴特殊(仅粘贴数值)
如果更习惯用复制粘贴的逻辑,可以调用PasteSpecial方法指定仅粘贴数值,代码如下:
Set wb = Workbooks.Open(strPath, False, True) wb.Sheets("vintage_agr").Columns("A:C").Copy wbMe.Sheets("input_4").Range("A1").PasteSpecial Paste:=xlPasteValues wb.Sheets("vintage_agr").Columns("H").Copy wbMe.Sheets("input_4").Range("D1").PasteSpecial Paste:=xlPasteValues wb.Sheets("analityka_id-tabele").Range("E68:G71").Copy wbMe.Sheets("strona 3").Range("E16").PasteSpecial Paste:=xlPasteValues wb.Sheets("analityka_id-tabele").Range("E72:G72").Copy wbMe.Sheets("strona 3").Range("E15").PasteSpecial Paste:=xlPasteValues ' 清空剪贴板,避免残留复制提示 Application.CutCopyMode = False wb.Close False Set wb = Nothing Beep MsgBox "Mamy to" End Sub
内容的提问来源于stack exchange,提问作者Przemek Dabek
相关产品推荐
相关产品推荐

