haw*_*bsl 34 windows clipboard ms-access vba access-vba
在Access2003/2007中使用VBA.
如何将字符串变量的内容复制到剪贴板?
此站点建议创建一个零长度的TextBox,将字符串复制到TextBox,然后运行DoCmd.RunCommand acCmdCopy.啊.我的意思是,我们可能会走这条路.但仍然.啊.
虽然MS知识库文章向我们展示了如何操作,但它涉及许多Windows API调用.育.
那是唯一的两种选择吗?
Cod*_*ray 58
VB 6提供了一个Clipboard对象,使所有这一切变得非常简单和方便,但遗憾的是VBA无法提供.
如果是我,我会去API路线.没有理由害怕调用本机API; 语言为您提供了出于某种原因这样做的能力.
但是,更简单的替代方法是使用DataObject类,它是Forms库的一部分.如果您已经在应用程序中使用Forms库中的功能,我建议您使用此路线.添加对此库的引用只是为了使用剪贴板似乎有点傻.
例如,要在剪贴板上放置一些文本,可以使用以下代码:
Dim clipboard As MSForms.DataObject
Set clipboard = New MSForms.DataObject
clipboard.SetText "A string value"
clipboard.PutInClipboard
Run Code Online (Sandbox Code Playgroud)
或者,将剪贴板中的文本复制到字符串变量中:
Dim clipboard As MSForms.DataObject
Dim strContents As String
Set clipboard = New MSForms.DataObject
clipboard.GetFromClipboard
strContents = clipboard.GetText
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何使用第一个Google结果来使用API.幸运的是,某个地方的某个帖子向我指出了这个链接:http: //access.mvps.org/access/api/api0049.htm
哪个很好用.:)
小智 7
social.msdn.microsoft.com网站上的用户Leigh Webber发布了VBA代码,实现了一个易于使用的剪贴板界面,该界面使用Windows API:
http://social.msdn.microsoft.com/Forums/en/worddev/thread/ee9e0d28-0f1e-467f-8d1d-1a86b2db2878
你可以在这里获得Leigh Webber的源代码
如果此链接未通过,请在Office开发人员中心> Microsoft Office for Developers论坛> Word for Developers部分中搜索"VBA的剪贴板对象".
我创建了这两个类,运行他的测试用例,并且它在Windows 7 64位下的Outlook 2007 SP3 32位VBA中完美运行.它很可能适用于Access.提示:要重命名类,请在VBA"项目"窗口中选择该类,然后单击菜单栏上的"查看"并单击"属性窗口"(或单击F4).
使用他的类,这是复制到剪贴板/从剪贴板复制的内容:
Dim myClipboard As New vbaClipboard ' Create clipboard
' Copy text to clipboard as ClipboardFormat TEXT (CF_TEXT)
myClipboard.SetClipboardText "Text to put in clipboard", "CF_TEXT"
' Retrieve clipboard text in CF_TEXT format (CF_TEXT = 1)
mytxt = myClipboard.GetClipboardText(1)
Run Code Online (Sandbox Code Playgroud)
他还提供了操纵剪贴板的其他功能.
它还克服了32KB MSForms_DataObject.SetText限制 - 这是SetText经常失败的主要原因.但是,请记住,不幸的是,我没有找到微软认可这一限制的参考.
-Jim
| 归档时间: |
|
| 查看次数: |
154818 次 |
| 最近记录: |