首页 文章

粘贴到活动单元VBA excel

提问于
浏览
1

我需要将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 回答

  • 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

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

    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
    

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

相关问题