有沒有辦法識別MS Excel工作表上的拖放事件?我在尋找的是能夠在將文件(例如從桌面)拖放到MS Excel工作表中的單元格(並將文件的名稱插入單元格)時收聽事件。在MS Excel中收聽鼠標(拖放)事件
這可以通過Excel宏來實現嗎?
有沒有辦法識別MS Excel工作表上的拖放事件?我在尋找的是能夠在將文件(例如從桌面)拖放到MS Excel工作表中的單元格(並將文件的名稱插入單元格)時收聽事件。在MS Excel中收聽鼠標(拖放)事件
這可以通過Excel宏來實現嗎?
我自己不確定如何執行任務 - 但是,似乎有人已經試圖解決這個問題。我把這個代碼vbadud.blogspot:如果它被放入文本
' Place file on textbox to display filename.
Private Sub TextBox1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
' Declare variable(s).
Dim eventvar1 As Integer '* Files Counter
' If an error occurs, go to the Error Handler.
On Error GoTo Error_Handle1
'Drag N' Drop Event Handler
If Data.GetFormat(vbCFFiles) = True Then
eventvar1 = Data.Files.Count
If eventvar1 = 1 Then
If InStr(1, LCase$(Data.Files(eventvar1)), ".xls") Then
txtExcel.Text = Data.Files(eventvar1)
End If
End If
End If
' Error Handler
Error_Handle1:
If Err <> 0 Then
Debug.Assert Err = 0
Err.Clear
End If
End Sub
的代碼將發佈文件的名稱。您可以使用方法,函數甚至單獨的子例程來使用已放入文本框的文本。
例如,在複製從一個文本框的文本到小區檢查的SO article,您可以使用此代碼來輸入文本到一系列對您的Excel工作表:
Range("A2").End(xlDown).Offset(1, 0).Value = TextBox1.Text
從那裏,它的一個問題要麼將子程序綁定到另一個宏的自動化或其他形式,要麼按照你認爲合適的方式拖放,要麼對你有意義。
讓我知道是否有幫助,
〜約爾
嗨,這段代碼接縫是關於拖動一些東西的控制,而不是工作表本身。可能會有幫助,但接縫與OP所要求的不同。 – Prokurors
您可以使用一個用戶窗體對象的「BeforeDragOver」事件註冊的拖放動作,但它可以解釋的唯一數據是文本它存儲在剪貼板上。我不確定是否有解決方案... –
如上所述觸發DragDrop事件需要在Workbook級別提供此事件,但事實並非如此。 DragDrop事件僅可用作表單的一部分,而不是工作簿或工作表。 – Ahmad
我實際上看到了一些資源,這讓我認爲這是可能的,但是我有麻煩讓自己無法工作。你有沒有嘗試過自己? [從MSDN鏈接](http://msdn.microsoft.com/en-us/library/gg264583.aspx)就是一個例子。再一次,我無法完全讓它自己工作,但這看起來很有希望。 – Gaffi