Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel宏:如何从其他Excel文件中提取数据_Vba_Excel - Fatal编程技术网

Vba Excel宏:如何从其他Excel文件中提取数据

Vba Excel宏:如何从其他Excel文件中提取数据,vba,excel,Vba,Excel,可能重复: 简言之,我想写一个脚本可以做到这一点。 在当前excel文件中,有一个宏按钮。用户可以单击按钮浏览文件(另一个Excel)。在浏览的Excel中,几个工作表将加载到当前的Excel工作簿中,并使用数据。 我是这样写的 Sub Button1_Click() ' choose LOAD path objFile = Application.GetOpenFilename(fileFilter:="All Files (* . *) , * . * ") ' br

可能重复:

简言之,我想写一个脚本可以做到这一点。 在当前excel文件中,有一个宏按钮。用户可以单击按钮浏览文件(另一个Excel)。在浏览的Excel中,几个工作表将加载到当前的Excel工作簿中,并使用数据。 我是这样写的

Sub Button1_Click()     ' choose LOAD path

    objFile = Application.GetOpenFilename(fileFilter:="All Files (* . *) , * . * ")   ' browse function

    ...    ' following

    Call main_function
End Sub

我已经编写了浏览函数。但是如何写下面的部分呢?objFile中的特定工作表数据将用于主函数。

虽然您想要的不是很清楚(我不确定我是否理解您问题的意图),但我会尝试一下

假设您有要在objFile中打开的文件名,您可以像这样从该电子表格中提取数据-我只需打开所选工作簿,然后将其中所有工作表的名称写入在按下按钮之前打开的任何工作表的A列

打开一个新工作簿会导致它被带到前台-因此,如果我在打开一本新书之前没有抓取活动工作表,然后在打开一本新书之后进行设置,那么您最终会覆盖刚刚打开的工作簿中的数据

Sub Button1_Click()
    ' choose LOAD path
    objFile = Application.GetOpenFilename(fileFilter:="All Files (* . *) , * . * ")   ' browse function

    Set curSheet = ActiveSheet
    Set mWorkbook = Workbooks.Open(objFile)
    curSheet.Activate

    Call someFunction(curSheet, mWorkbook)
End Sub


Sub someFunction(targetSheet, srcWorkbook)
    numSheets = srcWorkbook.Sheets.Count
    For i = 1 To numSheets
        targetSheet.Cells(i, 1) = srcWorkbook.Sheets(i).Name
    Next i
End Sub

thx!~我尝试了另一种方法。将整个工作表复制到当前工作簿。但缺点是使用后,用户需要点击“删除”来删除那些复制的工作表。实际上,我想要的只是读取数据,而不是复制和粘贴。这意味着导入并使用其他工作簿的数据而不进行跟踪。我不确定是否能做到这一点。你能详细说明你想做什么吗?您可以从传递给的任何函数中使用mWorkbook。使用该变量,可以读取excel文件中的任何数据。你不需要把数据从一个地方复制到另一个地方,除非你真的想把它复制到另一个地方。所以,正如我所说——如果你能进一步阐述你的意图,我将能够为你提供一个更好的答案。