excel – VBA将文件拖放到用户表单以获取文件名和路径

我想学习一个新的技巧,但我不是百分之百地对VBA有可能,但我想我会在这里与大师们联系.

我想做的是避开旧的getopenfilename或浏览器窗口(在我们的网络驱动器上设置起始目录非常困难)并且我想创建一个用户可以拖动的VBA用户表单并从桌面或窗体上的浏览器窗口中删除文件,VBA将加载文件名和路径.再一次,我不确定这是否可行,但如果是,或者有人在我欣赏指针之前已经做过了.我知道如何设置用户表单,但除此之外我没有任何真正的代码.如果有什么我可以提供,请告诉我.

感谢您的时间和考虑!

最佳答案
我想出了实现这一目标的方法.据我所知,它只能使用树视图控件来完成.您可能必须右键单击工具箱才能查找并添加它.它将存在于“附加控制”或类似的东西之下.除了控件外,你还需要两件事.

在UserForm_Initialize子中,您将需要以下代码行来启用拖放:TreeView1.OLEDropMode = ccOLEDropManual:

UserForm_Initialize()
    TreeView1.OLEDropMode = ccOLEDropManual
End Sub

然后,您将需要Private Sub TreeView1_OLEDragDrop事件.我省略了所有参数以节省空间.它们应该很容易找到.在那个sub中简单地声明一个字符串,可能是strPath或类似的东西来保存文件名和路径并设置strPath = Data.Files(1),这将获得用户拖动到TreeView的文件的文件名和路径控制.这假设用户一次只拖动一个文件,但据我所知,如果你试验它,可以拖动多个文件.

Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    StrPath = Data.Files(1)
End Sub

编辑:您还需要添加对Microsoft Windows Common Controls 6.0的引用

我还添加了示例代码.

转载注明原文:excel – VBA将文件拖放到用户表单以获取文件名和路径 - 代码日志