Edg*_*gar 2 ms-access vba drag-and-drop
我喜欢将文件从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
Run Code Online (Sandbox Code Playgroud)
但价值只是一些二进制信息.我想知道丢弃的文件名,或者我想读取删除文件中的内容(即删除文本文件).
我看了所有的属性,并在互联网上搜索,但我没有找到解决方案.我猜想很多人会在我想做之前尝试过.
有任何想法吗?
我认为BoundObjectFrame不会让你得到你想要的东西.
我建议使用ListView控件,而不是ActiveX控件.它具有内置的拖放支持.
演示:
在窗体上,插入Microsoft ListView Control, version 6.0ActiveX控件.
说出来lvwDD.
右键单击ListViewCtrl-object,Properties:将OLEDropMode设置为1 - ccOLEDropManual.
插入此事件过程:
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
Run Code Online (Sandbox Code Playgroud)
拖放控件上的一个或多个文件,并在立即窗口中看到输出(Ctrl + G).
| 归档时间: |
|
| 查看次数: |
1311 次 |
| 最近记录: |