我有这个项目,其主要目的是修改和使用Excel工作表。为了方便用户,一切都通过用户表单完成。待导入的工作表将以外部方式(通过邮件,从网络检索到的方式)通过外部来源发送到工作簿中,并且每次都具有不同的名称。我正在寻找最用户友好的方法来从此工作表中获取数据。
我想出的最用户友好的方式是暂时隐藏用户表单,并要求用户打开需要数据的工作簿。然后,让代码在我的主要项目表中复制我需要的表(如果它通过了一系列测试,请确定它是正确的,而不是其他一些随机打开的工作簿)。
我正在寻找一个更直观的解决方案,例如将工作簿拖放到我的项目的用户窗体上。我不确定是否可以做到,我在读关于树视图的需求,根据某些消息来源它不支持64,而根据另一些文件则可以正常工作。我还阅读了有关Treeview的JPK替换的信息,但我不确定从长远来看如何将其视为安全选择。
任何提示?我正在寻找一种解决方案,但实际上并不知道要寻找什么。
首先,我想说我不是下一个解决方案的“父亲”。我将其收集在有用的代码段和技巧中...我不记得是从哪里捡来的,并根据需要进行了调整。
添加对Microsoft Windows Common Controls 6.0 ...
的引用,可以通过IDE->工具->引用...
在表格上放置TreeView
控件。通常,您的工具箱不会显示它。因此,在ToolBox
上单击鼠标右键后,必须选择Additional Controls
选项。然后只需要检查Microsoft TreeView Control, version...
并按OK。
在窗体上拖动新控件,然后按F4
。在将显示的属性窗口中,必须将“ OLEDropMode”设置为OLEDropManual
。按Enter
,选择表格,然后按Save
。
在表单模块级别(在其顶部的声明区域)创建一个变量。在此声明它不是强制性的,但是如果需要的话,可以在此声明以备将来使用。碰巧我在那里需要它...
Private strExcelWPath As String
双击TreeView控件(默认-TreeView1
)并以这种方式打开其事件代码。按右上方的小向下箭头,然后选择OLEDragDrop
事件。它将创建下一个事件代码:
Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
End Sub
您必须插入下一行代码行(或类似代码),它会变成这样:
Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
strExcelWPath = Data.Files(1)
Debug.Print strExcelWPath 'just checking of what it returns
droppedWorkbookProcess strExcelWPath 'calling the sub able to process the workbook
End Sub
您能够处理删除的工作簿路径的函数必须看起来像这样:
Sub droppedWorkbookProcess(strFullName As String)
'Here you place the processing code, using of passed strFullName parameter
End Sub