将文件拖入Access,如何查看文件详细信息?

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)

但价值只是一些二进制信息.我想知道丢弃的文件名,或者我想读取删除文件中的内容(即删除文本文件).

我看了所有的属性,并在互联网上搜索,但我没有找到解决方案.我猜想很多人会在我想做之前尝试过.

有任何想法吗?

And*_*dre 7

我认为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).

  • 仅供参考,这个确切的代码也适用于 Treeview 控件。 (2认同)