大家好,我是vba的新手,我试图捕获工作表上的所有ctrl + v事件并将剪贴板上的所有内容粘贴到当前选定的单元格中。大多数情况下,我要复制的是来自firefox或记事本E的文本。我的客户名称或电话号码位于我们的网站上,但是该代码仅在我尝试粘贴到de cell本身(在单元格编辑模式下)时有效。
renderDT({
datatable(data_set(), style='bootstrap',
class='table-condensed', editable=FALSE, rownames=FALSE,
options = list(
scrollX = '400px', scrollY='360px',
searchHighlight=TRUE, order=list(0, 'asc'),
))
})
这将返回运行时错误1004范围类的粘贴特殊方法失败 我也尝试过这个,但是它也返回错误
Private Sub CopyPaste()
'PasteSpecial Values Only
ActiveCell.PasteSpecial Paste:=xlPasteValues, skipblanks:=True
请注意,仅粘贴文本和仅粘贴值的主要原因是因为我的excel具有非常特定的单元格布局,其中包含颜色和其他内容,而普通的粘贴会将所有内容弄乱了。
如果有人可以帮助我,我会喜欢的
答案 0 :(得分:1)
Range.PasteSpecial
方法将已复制的Range
粘贴到指定的Range
中。因此,这仅适用于范围:
ActiveCell.PasteSpecial Paste:=xlPasteValues, skipblanks:=True
需要直接访问剪贴板。 如何使用剪贴板here。
Option Explicit
Sub Init()
Application.OnKey "^{v}", "CopyPaste"
End Sub
Public Sub CopyPaste()
' MSForms.DataObject can be used when MSForms lib. is referenced
Dim clipboard As Variant
Dim strContents As String
' http://excelmatters.com/2013/10/04/late-bound-msforms-dataobject/
' When no MSForms is referenced yet.
Set clipboard = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
clipboard.GetFromClipboard
strContents = clipboard.GetText
' Parse or format strContent if needed
ActiveCell.Value = strContents
End Sub