使用剪贴板在VBA应用程序之间传递任何信息

VBA的优点在于,它为您提供了通常是VB应用程序一部分的许多功能和工具,尽管版本有所减少。

其中之一在特定应用程序内使用VBA的令人沮丧的部分是,要使两个应用程序相互“交谈"并不总是那么容易。这是因为您正在使用的所有变量只能在应用程序本身的范围内访问,而不能从计算机上的其他任何位置访问。

话虽如此,在基于VBA的应用程序(如Word或Excel)之间传递信息的方法。在许多情况下,即使在专业环境中,程序员也诉诸于应用程序与数据文件之间的通信。这可以行得通,但是它引入了潜在的篡改或错误元素(例如删除或修改这些文件)来使工作混乱。

您可以尝试使用另一种方法来在应用程序之间进行非常快速的信息交易。正在将数据传递到剪贴板,然后从另一个应用程序读取该信息。

使用剪贴板传递信息

在此示例中,我将向您展示如何传递三个文本信息-3个文本字段内的值-直接发送到Word宏启动的Excel电子表格。

这正是我们现在要做的。在“提交"按钮的功能中,我输入了以下代码。

看看它有多简单? strClipText数据对象是您可以操纵的剪贴板对象。首先,将所有字段值读入单个字符串变量,每个数据字段都用逗号或任何适合您的分隔符。

下一步,您将需要创建Excel文件在上面的Shell命令中打开的文件。在Excel中,您将要添加对“ Microsoft Forms 2.0对象库"的相同引用,然后在Workbook.Open()函数中,可以运行以下脚本。

再次,当您逐步执行时,这是一个简单且非常快速的脚本。它创建MSForms对象,并从剪贴板中获取最新数据,并将其放入字符串变量中。然后,它将使用您使用的任何定界符将单个长字符串变量拆分为单个字符串数组,最后逐步遍历该数组(CountA为您提供数组的长度),并将每个值输出到表2中的工作表。

您始终可以使用Excel参考库执行相同的操作,但是在那种情况下,您将默默地打开Excel文件并处理该文件中的数据。在上述情况下,您实际上是在打开Excel应用程序并显示文件,然后让Excel中的启动宏完成其余工作。

在还有其他应用程序(例如,许多制造厂中的许多操作员界面应用程序都基于VBA,但可能没有可用的库来紧密链接这两个应用程序。以这种自动化的方式使用剪贴板可以快速,轻松地完成工作。

尝试上面的脚本,让我们知道它如何在您的系统上工作。您必须进行调整吗?您对如何使代码变得更好有什么建议?在下面的评论部分中分享您的想法。

图片来源:通过Shutterstock传输文件

标签: Microsoft Excel Microsoft Word 编程 电子表格 Visual Basic编程