vba dataobject

DataObject 对象是转移操作中所使用的带格式文本数据的中转区。该对象还保留了与 DataObject 中保存的各段文本相对应的格式列表。

UserForm 对象
  |
  DataObject 对象


说明

DataObject 对象能够保存一段“剪贴板”文本格式的文本,并能为每种附加的文本格式(例如自定义和用户定义的格式)保存一段文本。

DataObject 对象与“剪贴板”不同。DataObject 支持与“剪贴板”及文本的拖放操作有关的命令。在开始进行与“剪贴板”有关的操作(如 GetText)或拖放操作时,与该操作有关的数据会被移到 DataObject 对象中。

DataObject 对象的工作方式与“剪贴板”很相象。如果将一串文本复制到 DataObject 对象,DataObject 对象将保存该文本。如果将相同格式的第二段文本复制到该 DataObject 对象,则 DataObject 对象将清除前一文本,并保存第二段的文本。对于每种指定的格式,它保存一段从最近一次操作得到的文本。



DataObject 和“剪贴板”的区别
参阅          特性

DataObject 和“剪贴板”都提供了将数据从一处移到另一处的方法。作为应用程序开发人员,无论是使用 DataObject 还是使用“剪贴板”,都要记住下列几项要点:

只要各项数据具有不同的数据格式,DataObject 和“剪贴板”就都可以同时保存多项数据。但是如果已经有数据使用了要保存数据的格式,则保存这个新数据,并丢弃原来的数据。


“剪贴板”支持图片格式和文本格式。而 DataObject 目前只支持文本格式。


只有应用程序运行时,DataObject 才存在;而“剪贴板”则是始终运行的(与正在运行的操作系统同时存在)。这意味着,将数据放到“剪贴板”后,如果关闭了应用程序,“剪贴板”上的数据不会丢失。DataObject 则没有这个功能。如果关闭应用程序,该应用程序放置在 DataObject 上的数据就会丢失。


DataObject 是一个标准的 OLE 对象,而“剪贴板”不是。这意味着,“剪贴板”支持标准的移动操作(复制、剪切和粘贴),但不支持拖放操作。如果需要应用程序支持拖放操作,就必须使用 DataObject。
提示   当用 SetText 方法将数据移动到“剪贴板”或 DataObject 时,可定义自己的数据格式名称。这样便于区分是应用程序移动的文本还是用户移动的文本。

VBA操作剪贴板数据
一、设置剪贴板内容
'仅对窗体有效,DataObject 是MSFORM子类
Dim MyData As New DataObject '声明新DataObject 类
MyData.SetText "文本内容" '设定文本,可以将Me.TextBox1.Text作为文本传递
MyData.PutInClipboard '送入剪贴板

二、读取剪贴板内容
Function GetClipBoardText()
'将剪贴板中的文本输出到一变量。
Dim MyData As DataObject
Set MyData = New DataObject
' 如果剪贴板的数据是文本
If MyData.GetFormat(1) = True Then
' 从剪贴板中获得数据
MyData.GetFromClipboard
' 把数据返回给函数值
GetClipBoardText = MyData.GetText(1)
End If
End Function

猜你喜欢

转载自tangleilei.iteye.com/blog/2307892
vba
今日推荐