将文件拖到Access中,如何检查文件详细信息?

时间:2016-10-17 09:50:59

标签: vba ms-access 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

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

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

有什么想法吗?

1 个答案:

答案 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)。