有没有办法识别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