Excel VBA 如何用Paste Special实现无公式但保留超链接的粘贴
你可以通过分两次粘贴的方式实现需求:先粘贴纯值清除公式,再单独粘贴指定列的超链接,无需保留其他格式,具体调整方案如下:
错误点说明
你原代码里的ActiveSheet.PasteSpecial Format:=3, Link:=True参数是创建指向源工作表的关联链接,不是保留单元格本身自带的外部文档超链接,不符合需求。
调整后的完整代码
Sub Button3_Click() Dim a As Long, b As Long, i As Long ' 这里修改为你实际存放超链接的列号,比如超链接在D列就填4 Const HYPERLINK_COLUMN As Integer = 4 a = Worksheets("Target List").Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To a If Worksheets("Target List").Cells(i, 17).Value = "Yes" Then b = Worksheets("Completed List").Cells(Rows.Count, 1).End(xlUp).Row ' 第一步:粘贴纯值,清除公式和所有格式 Worksheets("Target List").Rows(i).Copy Worksheets("Completed List").Cells(b + 1, 1).PasteSpecial Paste:=xlPasteValues ' 第二步:单独粘贴超链接列的超链接属性 Worksheets("Target List").Cells(i, HYPERLINK_COLUMN).Copy Worksheets("Completed List").Cells(b + 1, HYPERLINK_COLUMN).PasteSpecial Paste:=xlPasteAllExceptBorders Worksheets("Target List").Activate End If Next Application.CutCopyMode = False ThisWorkbook.Worksheets("Target List").Cells(1, 1).Select ActiveSheet.Range("Q8:R" & Range("Q8").End(xlDown).Row).ClearContents End Sub
参数说明
xlPasteValues:仅粘贴单元格计算后的结果,自动忽略公式和所有格式xlPasteAllExceptBorders:粘贴超链接属性的同时不会带入原表格的边框等格式,如果你完全不需要任何额外格式也可以替换为xlPasteLinks,可根据实际效果调整- 记得把代码里的
HYPERLINK_COLUMN常量改为你实际存放超链接的列序号即可
内容的提问来源于stack exchange,提问作者Artur Dzido
相关产品推荐
相关产品推荐

