在Access 2003/2007中使用VBA。
如何将字符串变量的内容复制到剪贴板?
This site建议a创建一个零长度的TextBox,将字符串复制到TextBox,然后运行DoCmd.RunCommand acCmdCopy
。唉。我的意思是,我们可能会走这条路。但仍然。唉。
虽然the MS knowledgebase article向我们展示了如何做到这一点,但它涉及到许多Windows API调用。
只有这两个选择吗?
在Access 2003/2007中使用VBA。
如何将字符串变量的内容复制到剪贴板?
This site建议a创建一个零长度的TextBox,将字符串复制到TextBox,然后运行DoCmd.RunCommand acCmdCopy
。唉。我的意思是,我们可能会走这条路。但仍然。唉。
虽然the MS knowledgebase article向我们展示了如何做到这一点,但它涉及到许多Windows API调用。
只有这两个选择吗?
5条答案
按热度按时间u4dcyp6a1#
VB 6提供了一个
Clipboard
对象,它使所有这些操作变得极其简单和方便,但不幸的是,VBA中没有这个对象。如果是我,我会走API路线。没有理由害怕调用本地API;这种语言为您提供这样做的能力是有原因的。
然而,一个更简单的替代方法是使用
DataObject
类,它是Forms库的一部分。我只建议如果你已经在你的应用程序中使用Forms库的功能,那么就走这条路。添加对这个库的引用 only 来使用剪贴板似乎有点愚蠢。例如,若要将一些文字放在剪贴板上,您可以使用下列程式码:
或者,将文本从剪贴板复制到字符串变量:
gab6jxml2#
www.example.com网站上的用户Leigh Webbersocial.msdn.microsoft.com发布了VBA代码,实现了一个使用Windows API的易用剪贴板界面:
http://social.msdn.microsoft.com/Forums/en/worddev/thread/ee9e0d28-0f1e-467f-8d1d-1a86b2db2878
您可以获得Leigh Webber's source code here
如果此链接无法通过,请在Office开发人员中心〉Microsoft Office for Developers论坛〉Word for Developers部分中搜索“VBA的剪贴板对象”。
我创建了这两个类,运行了他的测试用例,它在Windows 7 64位下的Outlook 2007 SP3 32位VBA中完美地工作。它很可能适用于Access。提示:要重命名类,请在VBA“项目”窗口中选择类,然后单击菜单栏上的“视图”,再单击“属性窗口”(或直接按F4)。
在他的类中,这就是从剪贴板复制到剪贴板或从剪贴板复制到剪贴板所需要的:
他还提供了其他操作剪贴板的函数。
它还克服了32 KB****MSForms_DataObject.SetText的限制-这是SetText经常失败的主要原因。但是,请记住,不幸的是,我还没有找到Microsoft认识到这一限制的参考资料。
ha5z0ras3#
我不知道如何使用第一个Google搜索结果的API。幸运的是,某个线程将我指向了以下链接:http://access.mvps.org/access/api/api0049.htm
效果很好。:)
xeufq47z4#
简单的两行代码:
这并不复杂,我不明白为什么所有在网络中找到的解决方案都如此复杂。
yk9xbfzb5#
这里列出了许多示例,但似乎都没有涵盖使用API的直接方式,该API也适用于Access和Excel 32位和64位。
我不想偷别人的工作,所以我指着一篇文章,有一个解决方案。
https://stackoverflow.com/a/35512118/1898524