粘贴到活动单元VBA excel

时间:2014-12-09 18:09:30

标签: excel vba excel-vba paste

我需要将Word表格中的文本粘贴到Excel工作表中,但由于Word中的某些单元格需要在Excel中保留换行符,因此不能选择直接复制/粘贴 - Excel会解释任何细胞断裂时断线。为了解决这个问题,我正在使用虚拟文本替换Word中的换行符(例如,“@@@”),然后粘贴到Excel中,最后运行find / replace以使用Excel兼容的换行符替换虚拟文本(ALT + 0010)。

我录制了一个宏来执行此操作:

Sub IDA()
'
' IDA Macro
'
' Keyboard Shortcut: Ctrl+q
'
Sheets("Deployment").Select
ActiveWindow.SmallScroll Down:=-12
Range("C2").Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False, NoHTMLFormatting:=True
Selection.Replace What:="@@@", Replacement:="" & Chr(10) & "", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End Sub

但是当我移动下一个文本块进行粘贴时,它会粘贴回原始目标。我可以看到工作表(“部署”)和范围(“C2”)都是硬编码的。我尝试删除那些行,但这破坏了脚本 - 当我运行时没有任何反应。

我可以简化脚本以进行搜索和替换,但我不相信其他用户在粘贴到Excel时使用粘贴特殊选项,这意味着电子表格可能会以Word中的其他格式结束我不想要。

如何修改我的脚本以便它只是粘贴到活动工作表和单元格中?

2 个答案:

答案 0 :(得分:1)

尝试删除2条硬编码行,并使用:

Selection.PasteSpecial ....

所以结束代码:

Sub IDA()
'
' IDA Macro
'
' Keyboard Shortcut: Ctrl+q
'
ActiveWindow.SmallScroll Down:=-12
Selection.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
    False, NoHTMLFormatting:=True
Selection.Replace What:="@@@", Replacement:="" & Chr(10) & "", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End Sub

答案 1 :(得分:1)

这是一个简单的解决方案。在录制宏之前,只需单击“使用相对引用”按钮(直接在录制按钮下)即可。它产生了以下脚本:

Sub IDA()
'
' IDA Macro
'
' Keyboard Shortcut: Ctrl+q
'
    ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
        False
    Selection.Replace What:="@@@", Replacement:="" & Chr(10) & "", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

不确定这是否是效率最高的代码,但它会为我自己和其他三个人每季度执行此操作几次。从来没有足够的数据被复制以注意到差异。我们付出了很多努力来满足一位同事的嗜好,这位同事不会被两次击键所困扰,并确保使用粘贴特殊选项。