通过变量将 sheet 或数据从一个工作簿添加到另一个工作簿

Adding a sheet or data from one workbook to another via variable

我有这个项目,主要目的是修改和使用 excel sheet。为了用户友好,一切都通过用户表单完成。要导入的 sheet 将位于外部源通过不同方式(邮件、从网络检索...)发送的工作簿中,并且每次都有不同的名称。 我正在寻找最用户友好的方式来从此 sheet.

获取数据

我能想到的最用户友好的方法是暂时隐藏用户表单并要求用户打开需要数据的工作簿。然后,为了让代码复制 sheet 我需要在我的主要项目 sheet 中(如果它通过了一系列测试,可以确定它是正确的而不是其他随机打开的工作簿)。

我一直在寻找更直观的解决方案,例如将工作簿拖放到我项目的用户窗体上。我不确定它是否可以完成,我正在阅读有关 treeview 的需求,根据某些来源,它不支持 64,而根据其他人的说法,它工作正常。我还阅读了有关 Treeview 的 JPK 替代品,但我不确定这种替代品如何被视为长期的安全选择。

有什么提示吗?我正在寻找解决方案,但实际上不知道要寻找什么。

首先声明一下,我不是下解的'father'。我在我收集的有用的代码和技巧中有它...... 我不记得是从哪里捡到的,根据我的需要改编。

  1. 添加对 Microsoft Windows Common Controls 6.0 ... 的引用 这可以通过 IDE -> 工具 -> 引用...

  2. 完成
  3. 在表单上放置一个 TreeView 控件。通常您的工具箱不会显示它。因此,在 ToolBox 上单击鼠标右键后,必须选择 Additional Controls 选项。然后只需要检查Microsoft TreeView Control, version...并按确定。

  4. 将新控件拖到窗体上并按 F4。在将出现的属性 window中,您必须将'OLEDropMode'设置为OLEDropManual。按 Enter、select 表格并按 Save.

  5. 在表单模块级别(在它的顶部,在它的声明区域)创建一个变量。不强制在那里声明它,但如果需要的话,最好把它放在那里以备将来使用。碰巧我在那里需要它...

    Private strExcelWPath As String

  6. 双击 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(数据为 MSComctlLib.DataObject,效果为长,按钮为整数,移位为整数,x 为单个,y 为单个) strExcelWPath = Data.Files(1)<br> Debug.Print strExcelWPath '只是检查它的内容 returns droppedWorkbookProcess strExcelWPath '调用能够处理工作簿的子程序 结束子

  7. 能够处理丢弃的工作簿路径的函数必须如下所示:

    Sub droppedWorkbookProcess(strFullName As String) 'Here you place the processing code, using of passed strFullName parameter End Sub

  8. 代码可以适用于多个selection,如果需要的话...