我喜欢将文件从Windows资源管理器或Outlook邮件中的附件拖到MS-Access中。
我发现我已经可以使用Access BoundObjectFrame(https://msdn.microsoft.com/en-us/library/office/ff835725.aspx)作为目标来从Windows资源管理器中拖放文件。
使用以下代码,我看到有些内容被放入了该字段:
Private Sub OLE1_GotFocus()
Debug.Print "OLE1_GotFocus()"
Debug.Print " OLE1.Value: " & OLE1.Value
End Sub
但价值只是一些二进制信息。 我想知道丢弃的文件名,或者我想要读取删除文件中的内容(即删除文本文件)。
我查看了所有属性并在互联网上搜索但我找不到解决方案。我猜想很多人会在我想做之前尝试过。
有什么想法吗?
答案 0 :(得分:5)
我不认为BoundObjectFrame会为您提供所需的内容。
我建议使用ListView Control代替ActiveX控件。它具有内置的Drag& Drop支持。
<强>演示:强>
在表单上,插入Microsoft ListView Control, version 6.0
ActiveX控件
将其命名为lvwDD
右键单击ListViewCtrl-object,Properties:将OLEDropMode设置为1 - ccOLEDropManual
。
插入此event procedure:
Private Sub lvwDD_OLEDragDrop(Data As Object, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Dim i As Long
' https://msdn.microsoft.com/en-us/library/aa244109(v=vs.60).aspx
Const vbCFFiles = 15
If Data.GetFormat(vbCFFiles) Then
' https://msdn.microsoft.com/en-us/library/aa267471(v=vs.60).aspx
For i = 1 To Data.Files.Count
Debug.Print Data.Files(i)
Next i
Else
Debug.Print "No file(s) dropped."
End If
End Sub
在控件上拖放一个或多个文件,然后在立即窗口中看到输出(Ctrl + G)。