2016-10-17 19 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