ざっと見た感じではコード自体に問題はなさそうです。
(もっとスマートな書き方かあるかもということは置いておいて)
とりあえずうまくいかないとき、原因を特定するためのデバッグ作業をしてみましょう。
まず、
On Error GoTo Err_Handler
はコメントアウトしておきましょう。これがあるとどこでエラーがある分かりません。
次に、
Set xls = CreateObject("Excel.Application")
xls.Visible = True '挿入
With xls
'画面の再描画を抑止
' .screenUpdating = False コメントアウト
としてエクセルを表示させ、画面の再描画停止をやめましょう。
これでエクセル上での操作を目で確認できます。
そのうえで1行ずつステップ実行して動作を確認しつつ、どこでどのようなエラーが出るのか確認しましょう。ステップ実行 は下記リンクを参考にしてください。
デバッグの基本 – ステップ実行 | ExcelVBA入門 自宅でプログラミング
このデバッグ作業をして、どの行でどのようなエラーがでるのか教えてください。
通報 ...