0

複数の外部ブックから 1 つのブックに特定の順序でデータをコピーするマクロを作成しようとしています。マクロを機能させるために各ワークブックを開くつもりはありません。開いているスプレッドシートの数が膨大になるため です。 com/index.php/tip/a_vba_function_to_get_a_value_from_a_closed_file/

残りのコードを準備するために、外部ブックのセルから 1 つのデータを取得し、それをブックとシートの 1 つのセルに配置するだけのコードを作成しました。現在のワークシートでは、アクセスしたいワークブックのファイル パスを B 列に貼り付け、ファイル名を A 列に貼り付けました。コード。そのコードは次のとおりです。

Sub Gather_Data()

Dim p As String
Dim f As String
Dim s As String
Dim a As String

p = Range("B7").Value
f = Range("A7").Value
s = Sheet5
a = D7

Cells(10, 10).Value = GetValue(p, f, s, a).Value

End Sub

Private 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 an XLM macro
    GetValue = ExecuteExcel4Macro(arg)
End Function

コードに問題はありませんが、実行しようとすると、「オブジェクト '_Global' のメソッド 'Range' が失敗しました」という実行時エラーが発生します。正直なところ、それが何を意味するのかわかりません。デバッガーを実行すると、

    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)

私も書いていないエリア。この関数を使用した経験があるか、このエラーを解決する方法を知っている人がいる場合は、ご意見をお寄せください。前もって感謝します!

4

1 に答える 1