【问题标题】:Excel vba paste special method fails whenever i try to paste每当我尝试粘贴时,Excel vba 粘贴特殊方法都会失败
【发布时间】:2019-04-13 10:40:30
【问题描述】:

大家好,我是 vba 的新手,我正在尝试捕获工作表上的所有 ctrl+v 事件,并将剪贴板上的所有内容粘贴到当前选定的单元格中。大多数情况下,我要复制的是来自 firefox 或记事本 E.I 客户端名称或电话号码的文本,这些信息位于我们的网站上,但代码仅在我尝试粘贴到 de cell 本身时才有效(在单元格编辑模式下)

    Private Sub CopyPaste()

'PasteSpecial Values Only
  ActiveCell.PasteSpecial Paste:=xlPasteValues, skipblanks:=True

这会返回运行时错误 1004 范围类的 pastespecial 方法失败 我也试过这个,但它也返回一个错误

activecell.PasteSpecial Format:="Text", skipblanks:=True, link:=False, DisplayAsIcon:=False

请注意,仅粘贴文本和仅粘贴值的主要原因是因为我的 excel 具有非常特定的单元格布局,其中包含颜色和其他内容,而正常的粘贴会搞砸一切。

如果有人可以帮助我,我会很高兴的

【问题讨论】:

  • 您需要访问Clipboard - 请参阅here
  • 我应该澄清一下,我在 workbook_open 子 Application.OnKey "^{v}", "CopyPaste" 上捕获所有 ctrl+v
  • urdearboy 哦,所以如果我不先从剪贴板检索数据,我不能将其粘贴为文本?所以我需要创建一个 msform obj 并将其粘贴到那里?
  • 您可能会发现this 很有用

标签: excel vba copy-paste


【解决方案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

【讨论】:

  • 我今天会试试这个 抱歉回复晚了 我没有多少时间看堆栈交换 如果它有效,我会在今天或明天告诉你,如果非常感谢大家如此友善和帮助的方式:)
  • 好的,所以这段代码可以工作,但是如果我从我的网站粘贴白色背景,我会失去中心对齐以及单元格线颜色和背景颜色
  • 没问题,慢慢来,这里不是比赛 :)。那么尝试使用一些剪贴板查看器来查看实际复制到剪贴板的内容,但格式可能不是内容的一部分,而是基于某种 css 样式呈现的。
  • 好的代码完美运行我刚刚评论了单元代码不小心制作了非常感谢你
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多