【问题标题】:Copy / Paste in Excel using clipboard使用剪贴板在 Excel 中复制/粘贴
【发布时间】:2016-06-06 20:33:49
【问题描述】:

使用剪贴板从PDF 复制数据后。我在clipboard 中有三个数据块,我想Paste 每个在Excel-2007 的不同位置让我们说:

  • 剪贴板3中的数据应粘贴到A1

  • 剪贴板2中的数据应该粘贴到C1

  • 剪贴板1中的数据应粘贴到E1

VBA 代码

 ActiveSheet.Paste 

在这里不起作用,它只会粘贴最后复制的内容。 是否可以使用Excel VBA 处理Clipboard 以及如何处理?

【问题讨论】:

  • 据我所知,这个问题已经被问过,但从未得到答案:stackoverflow.com/questions/25807122/…。然而,对我来说,问题是数据是如何进入剪贴板的。 VBA 有变量和对象,可以很容易地用来存储和复制它们。你为什么不改用这些呢?
  • 正如我提到的,数据是从 PDF 文件中复制的(3 或 4 个不同的位置)。如果我使用变量来复制数据,它不会考虑表格。
  • There is software out there to convert PDFs to Excel. 但是,您必须购买它才能使用它。如果您没有任何 API(使用 VBA 自动执行此操作)可以使用,那么您必须手动完成。即使@Vityata 提供的答案可能不是您喜欢的(不幸的是)正确答案,并且 VBA / Excel 本身也无法按照您想要的方式处理 PDF。
  • 我尝试使用Application.SendKeys 无济于事。我所能做的就是打开办公室剪贴板窗格。从那里开始,我无法循环浏览列表。有更多知识的人可能能够扩展这个想法。
  • 当然可以让 VBA 访问剪贴板,但不能使用 VBA 对象模型中的方法 - user32 和 kernel32 API 库将允许您执行此操作,而 VBA 可以访问

标签: vba excel excel-2007 clipboard


【解决方案1】:

我尝试使用宏记录器将一些内容复制到剪贴板并从那里粘贴。看到代码,我的看法是你的问题的答案是“NO”。

自己看一下代码,你会发现剪贴板位置根本没有被引用:

Sub Makro2()
'
' Makro2 Makro
'

'
    Range("A2").Select
    Selection.Copy
    Range("A1").Select
    ActiveSheet.Paste
    Range("A3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("A4").Select
    ActiveSheet.Paste
    Range("A5").Select
    Application.CutCopyMode = False
    Range("A4").Select
    Selection.Copy
    Range("A3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("A2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Application.CutCopyMode = False
    Range("C4").Select
    ActiveSheet.Paste
    Range("C6").Select
    ActiveSheet.Paste
    Range("D13:D14").Select
    Range("D14").Activate
    ActiveSheet.Paste
    Range("C15").Select
    ActiveSheet.Paste
    ActiveSheet.Paste
    Range("A17").Select
    ActiveSheet.Paste
    Range("C18").Select
End Sub

【讨论】:

  • 你说得对,“剪贴板位置没有被引用”。我自己试了一下。我在谷歌上搜索这个问题几个月了。没有找到任何东西,但转折是VBA 可以处理其他应用程序所以在我看来VBA 也可以处理Clipboard 作为application / object。我只需要一个快速的开始;)。
  • 好吧,如果您需要处理其他应用程序并从中复制,那么您可能可以使用 VBA 中的列表来保存值并从那里粘贴,而根本不使用剪贴板。它会按照你的意愿工作。
  • @Vityata 只有当他/她有一个 API 来引用“其他应用程序”时,OP 才能做(如你所建议的)。否则,VBA 无法访问此应用程序。据我所知,只有他/她必须购买的软件才能这样做(至少 PDF 是这种情况)。
  • @Ralph,好吧,最初我以为剪贴板是手动填写的。例如。打开pdf,ctrl+A和ctrl+C。如果是这种情况,那么我认为使用用户表单和按钮,可以填写对象列表。更多的手动工作,但仍然是一个解决方案。我没有尝试过 PowerPDF,但从视频中看起来不错。
猜你喜欢
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 2011-05-13
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多