Excel VBA 宏:在粘贴之前检查(剪贴板的?)内容

eri*_*ric 5 excel vba copy-paste

我在将各种来源的数据粘贴到 Excel 时遇到了一些严重的问题。Excel 往往试图变得聪明,并进行各种愚蠢的格式化。我们需要文本形式的数据。

问题是我们有很多用户,其中许多人对计算机不是很有经验,因此要求他们每次都使用右键单击和“选择性粘贴”是不可能的。

我找到了一个解决方案,记录使用“选择性粘贴”和“文本”的宏,并覆盖 ctrl-v 以使用此功能。它似乎工作得很好,直到我标记一个单元格,复制它,并尝试粘贴它。宏崩溃了。

所以我需要一个函数,可以检查我是否尝试粘贴一些复制的文本,然后使用这一行:

 ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
        False
Run Code Online (Sandbox Code Playgroud)

如果我粘贴标记的单元格,我想运行此行(仅粘贴值):

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Run Code Online (Sandbox Code Playgroud)

我在为 Excel 编写 VBA 宏方面不是很有经验(我希望我永远不必如此),所以如果有人能提供一些指导,我将不胜感激。

Gar*_*ill 4

对于剪贴板访问/操作,您需要在“项目”->“引用”中添加对 Microsoft Forms 2.0 库的引用。然后,您可以使用MSForms.DataObject具有(除其他外)方法的类GetFormat来检查剪贴板是否具有特定类型的数据。

是使用剪贴板处理的一个很好的介绍DataObject