単純な値を返す以上のことをしたいので、関数ではなくサブルーチンが必要になります。これは、ニーズに合わせて調整できる非常に単純なサブです。
Sub CopyBlock(Sourze As String, Deztination As String)
Dim FinalDestination As Workbook
ary1 = Split(Sourze, "|")
ary2 = Split(Deztination, "|")
Set FinalDestination = Workbooks.Open(ary2(0))
ThisWorkbook.Sheets(ary1(0)).Range(ary1(1)).Copy FinalDestination.Sheets(ary2(1)).Range(ary2(2))
FinalDestination.Save
FinalDestination.Close
End Sub
Sub MAIN()
Call CopyBlock("Sheet1|A1:B9", "C:\TestFolder\ABC.xls|NewName|C10")
End Sub
テスト サブMAINを調べるとわかるように、CopyBlockには 2 つの入力パラメーターがあります。
- ソース シートのシート名 | ソース範囲のアドレス
- 宛先ファイルの filespec | 宛先シートのシート名 | 宛先範囲の左上隅。