2016-10-17 20 views
1

我喜欢将Windows资源管理器中的文件或附件从Outlook邮件拖入MS-Access。将文件拖入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 

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

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

任何想法?

回答

4

我不认为BoundObjectFrame会给你你想要的。

我建议使用一个ListView Control,而不是一个ActiveX控件。它具有内置的拖拽&删除支持。

演示:

在一个形式中,插入一个Microsoft ListView Control, version 6.0 ActiveX控件。
将其命名为lvwDD
右键单击ListViewCtrl对象属性:将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)的输出。

+0

谢谢,你赢得了赏金。 – Edgar

+0

你知道如何将这个附件从一个Outlook电子邮件拖到这个ListView控件中吗?我得到“没有文件被丢弃”的消息。如果我尝试使用“If Data.GetFormat(VbCFText)”,这也不起作用。 – Edgar

+0

@Edgar:这是一个非常有趣的问题,但它似乎非常复杂:[处理拖放电子邮件附件](http://www.codeguru.com/cpp/in/internet/email/article.php/ c3381/Handling-Drag-of-Email-Attachments.htm)(链接自[here](https://social.msdn.microsoft.com/Forums/office/en-US/8c4adf0a-2b72-4a4b -ba71-c61cabc6f5dd /拖放电子邮件附件和拖放到列表视图,VBA?论坛= accessdev))。 - 或者https://www.experts-exchange.com/questions/21786219/Ole-Drag-Drop-File-Attachment-From-Outlook.html – Andre