VBA拖放文件到用户窗体获取文件名和path

我想学习一个新的技巧,但我并不是100%有信心在VBA中是可能的,但是我认为我会在这里与大师进行核对。

我想要做的是避开古老的getopenfilename或浏览器窗口(在networking驱动器上设置起始目录非常困难),我想创build一个VBA用户窗体,用户可以拖动并从窗体上的桌面或浏览器窗口中删除文件,VBA将加载文件名和path。 再次,我不确定这是否可能,但如果是的话,或者如果有人已经做到了,我会欣赏指针。 我知道如何设置用户表单,但是除此之外我没有任何真实的代码。 如果有什么我可以提供的,让我知道。

感谢您的时间和考虑!

我想出了一个办法来实现这一点。 据我所知,只能使用树视图控件来完成。 您可能必须右键单击您的工具箱才能find并添加它。 它将在“附加控制”或类似的地方。 除了控件外,还需要两件事情。

UserForm_Initialze子文件中,您将需要以下代码行来启用拖放:“TreeView1.OLEDropMode = ccOLEDropManual”:

 UserForm_Initialize() TreeView1.OLEDropMode = ccOLEDropManual End Sub 

那么你将需要'Private Sub TreeView1_OLEDragDrop'事件。 我省略了所有的参数来节省空间。 他们应该很容易find。 在这个sub只是声明一个string,也许strPath或类似的东西,以保存文件名和path,并设置strPath = Data.Files(1) ,并将获得文件的名称和path的用户拖动到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的引用

我还添加了示例代码。

马特的解决scheme是伟大的,只需要确保:

需要添加支持OLEDragDrop操作的TreeView控件:

右键单击显示所有可用控件的工具箱区域。 select“其他控件…”包括:“Microsoft TreeView控件,版本6.0”

Interesting Posts