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

问题描述 投票:0回答:1

我有这个项目,其主要目的是修改和使用Excel工作表。为了方便用户,一切都通过用户表单完成。待导入的工作表将以外部方式(通过邮件,从网络检索到的方式)通过外部来源发送到工作簿中,并且每次都具有不同的名称。我正在寻找最用户友好的方法来从此工作表中获取数据。

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

我正在寻找一个更直观的解决方案,例如将工作簿拖放到我的项目的用户窗体上。我不确定是否可以做到,我在读关于树视图的需求,根据某些消息来源它不支持64,而根据另一些文件则可以正常工作。我还阅读了有关Treeview的JPK替换的信息,但我不确定从长远来看如何将其视为安全选择。

任何提示?我正在寻找一种解决方案,但实际上并不知道要寻找什么。

excel vba spreadsheet userform
1个回答
0
投票

首先,我想说我不是下一个解决方案的“父亲”。我将其收集在有用的代码段和技巧中...我不记得是从哪里捡来的,并根据需要进行了调整。

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

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

  3. 在窗体上拖动新控件,然后按F4。在将显示的属性窗口中,必须将“ OLEDropMode”设置为OLEDropManual。按Enter,选择表格,然后按Save

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

    Private strExcelWPath As String

  5. 双击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

  6. 您能够处理删除的工作簿路径的函数必须看起来像这样:

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

© www.soinside.com 2019 - 2024. All rights reserved.