从数据中选择,然后复制到系统剪贴板并粘贴到另一个程序中

从数据中选择,然后复制到系统剪贴板并粘贴到另一个程序中

在 Excel 中,我将某些项目名称与某些条形码编号相关联(例如 item1 00335578)。假设这些存储在电子表格中的 2 列中。

在另一个电子表格上,我想有一个具有自动完成功能的搜索框。例如,我的数据库中有两个项目 - item1 和 house2。当用户开始输入“it”时,可能的匹配项(在当前场景中为 item1)应该弹出(就像在 Google 搜索中一样),用户可以点击它们。

此字段旁边会有一个按钮 - “复制”。点击它将复制条形码我们搜索的相应项目(不是名称)。最好这还会将其粘贴到当前打开的另一个程序中(我很乐意就此提出建议)。

为了简单起见,我可以在设计中做出 2 点妥协,如果你们认为这太复杂,或者这种行为的实现明显是小题大做的话:

  1. 搜索框可以是下拉菜单,而不是具有自动完成功能的字段
  2. “复制按钮”可以简单地复制条形码号码,并让用户将其粘贴到其他打开的程序中。

这必须在 excel 中完成,我希望你能帮忙。我需要指导如何解决这个问题,我不指望有完整的解决方案(尽管,我必须承认,这会很有帮助 :D)

答案1

这是帮助您入门的一种方法。用户必须手动粘贴数据。

在此处输入图片描述

1 - 数据验证

选择单元格然后转到数据>数据验证. 设置来源添加到您想要包含的项目列表中。

在此处输入图片描述

在上面的例子中,我使用了命名范围项目引用第一列:

在此处输入图片描述

2 - 具有指定宏的形状

第一张图片中的“按钮”只是一个带有指定宏的形状,它(1)获取所选项目的名称,(2)从样本源数据中查找条形码,然后(3)将条形码发送到剪贴板供用户查看。

这是我使用的代码。只需更改它以满足您的需求(物品在我的示例中指的是单元格 B2,产品参考样本源数据):

Sub Get_Barcode()
    Dim objData As New DataObject
    Dim barcode As String
    barcode = Application.VLookup(Range("item"), Range("products"), 2, False)
    objData.SetText barcode
    objData.PutInClipboard
    MsgBox "Barcode " & barcode & " copied to clipboard"
End Sub

使用时:

在此处输入图片描述

您可能需要添加参考到 Microsoft Forms 2.0 对象库才能使此代码正常工作。在 VBA 编辑器中,转到工具>参考>浏览并在那里检查。如果没有列出,你可能需要点击浏览并手动添加。在我的笔记本电脑上,它位于 C:\Windows\System32\FM20.DLL

答案2

您可以通过使用方法直接将数据发送到外部应用程序来增强上述宏Application.SendKeys,而不是将其放入剪贴板。

相关内容