まず、
Dim Moto, Saki As Workbook
これだと、Moto はVariant型になります。
これでも動きますが、きちんとデータ型を指定した方がいいでしょう。
Dim Moto As Workbook, Saki As Workbook
次に、下記の部分、
Workbooks.Open(Filename:=SetFile, ReadOnly:=True, UpdateLinks:=0) '読取専用で開く
Set Saki = Workbooks.Open(SetFile) '開いたブックをワークシート変数にセット
同じファイル(SetFile)を2回開いてます。下記のように1行にまとめましょう。
Set Saki = Workbooks.Open Filename:=SetFile, ReadOnly:=True, UpdateLinks:=0 '読取専用で開きワークシート変数にセット
下記はどういう意味でしょうか。
Lastrow = Saki.Worksheets("5月分").Range("O2").Value '取込先のデータ終端値取得
O2セルには何が格納されているのでしょうか。
データ範囲の最終行番号でしょうか。
それはいつどのように格納していますか。
データをすべてコピーするなら、最終行番号を取得する必要がありますが、
通常、最終行番号は下記のようなコードで取得できます。
Lastrow = Saki.Worksheets("5月分").Cells(Rows.Count, 2).End(xlUp) '取込先のデータ最終行番号
とりあえず、上記の点の修正、確認をしてみてください。