0

3 つのファイルがあり、ファイル 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

これは、あなたがやろうとしていることへの良いリンクです。閉じたファイルから情報を取得する


開始するためのコードを次に示します。現在、シート 2 の「A1」から最初のファイル パスを取得し、「A2」からワークブック名​​を取得して、値をシート 1 の「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 に答える