4

有没有办法识别 MS Excel 工作表上的拖放事件?我正在寻找的是能够在您将文件(例如从桌面)拖放到 MS Excel 工作表中的单元格上(并将文件名插入到单元格中)时能够收听事件。

这完全可以用 Excel 宏来实现吗?

4

1 回答 1

1

我自己不确定如何执行该任务 - 但是,似乎有人已经尝试解决这个问题。我从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 文章,您可以使用此代码将文本输入到 Excel 工作表上的范围中:

Range("A2").End(xlDown).Offset(1, 0).Value = TextBox1.Text 

从那里开始,它的问题是将子例程绑定到另一个宏以实现一种或另一种自动化形式,在您认为合适的情况下拖放,或任何对您有意义的事情。

让我知道这是否有帮助,

~乔尔

于 2012-07-27T17:25:11.830 回答