0

我们有三个文件,文件 1 和 2 包含工作表 1 的数据。在文件 3 中,工作表 2 有一个按钮和一个表格(包含文件 1 和 2 的详细信息,例如文件名和路径):

File 1
ABC 123

File 2
BAC 321

单击表 2 上的按钮后,宏应从文件 1 和 2 的表 1 中获取数据,并将它们放置在文件 3 的表 1 中,如下所示:-

File 3
ABC 123
BAC 321

我发现很少有代码使用以下功能来做同样的事情,但它们只能在代码所在的工作表上工作。

arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
'   Execute an XLM macro
    GetValue = ExecuteExcel4Macro(arg)
4

1 回答 1

1

这是您尝试做的事情的一个很好的链接。从关闭的文件中获取信息


这是一些帮助您入门的代码。现在它设置为从 sheet2 'A1' 获取第一个文件路径,从 'A2' 获取工作簿名称,并将值返回给 sheet1 'A1'。一旦你完成了这项工作,你将需要遍历你的范围(取决于你如何进行设置)并显示结果。

Sub ReadDataFromAllWorkbooksInFolder()
    Dim FolderName As String, wbName As String, r As Long, cValue As Variant
    Dim wbList() As String, wbCount As Integer, i As Integer

    'Path from sheet two in macro book
    FolderName = Worksheets(2).Range("A1").Text

    'File Name from sheet two in macro book
    Filename = Worksheets(2).Range("A2").Text
    wbName = Worksheets(2).Range("A2").Text

    cValue = GetValue(FolderName, wbName, "Sheet1", "A1")
    Worksheets(1).Cells(1, 1).Formula = cValue
End Sub

Function GetValue(Path, File, Sheet, Ref)
     'Retrieves a value from a closed workbook
    Dim Arg As String
     'Make sure the file exists
    If Right(Path, 1) <> "\" Then Path = Path & "\"
    If Dir(Path & File) = "" Then
        GetValue = "File not  Found"
        Exit Function
    End If
     'Create the argument
    Arg = "'" & Path & "[" & File & "]" & Sheet & "'!" & Range(Ref.Range("A1").Address(, , xlR1C1))
     'Execute XLM macro
    GetValue = ExecuteExcel4Macro(Arg)
End Function
于 2013-10-05T15:48:30.443 回答