複数の外部ブックから 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)
私も書いていないエリア。この関数を使用した経験があるか、このエラーを解決する方法を知っている人がいる場合は、ご意見をお寄せください。前もって感謝します!