我需要将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 回答
尝试删除2个硬编码行,并使用:
所以结束代码:
事实证明这是一个简单的解决方案 . 在录制宏之前,只需单击“使用相对引用”按钮(直接在录制按钮下)即可 . 它产生了以下脚本:
不确定这是否是最有效的代码,但它将为我自己以及其他三个人每季度执行此操作几次 . 从来没有足够的数据被复制以注意到差异 . 我们付出了很多努力来满足一个同事的嗜好,这个同事不会被两次击键困扰,并确保使用粘贴特殊选项 .