-ChatGPT-
-ChatGPT-4の回答
Option Explicit Sub CopyRangeBetweenFiles() Dim SourceWorkbook As Workbook Dim TargetWorkbook As Workbook Dim SourceRange As Range Dim TargetRange As Range Dim FileDialog As FileDialog ' ソースファイルを開く Set FileDialog = Application.FileDialog(msoFileDialogOpen) With FileDialog .Title = "ソースファイルを選択" .AllowMultiSelect = False If .Show = -1 Then Set SourceWorkbook = Workbooks.Open(.SelectedItems(1)) Else Exit Sub End If End With ' ソースファイルで範囲を選択 On Error Resume Next Set SourceRange = Application.InputBox("範囲を選択してください", Type:=8) On Error GoTo 0 If SourceRange Is Nothing Then SourceWorkbook.Close Exit Sub End If ' ターゲットファイルを開く Set FileDialog = Application.FileDialog(msoFileDialogOpen) With FileDialog .Title = "ターゲットファイルを選択" .AllowMultiSelect = False If .Show = -1 Then Set TargetWorkbook = Workbooks.Open(.SelectedItems(1)) Else SourceWorkbook.Close Exit Sub End If End With ' ターゲットファイルで範囲を選択 On Error Resume Next Set TargetRange = Application.InputBox("範囲を選択してください", Type:=8) On Error GoTo 0 If TargetRange Is Nothing Then SourceWorkbook.Close TargetWorkbook.Close Exit Sub End If ' セルの範囲をコピー&ペースト SourceRange.Copy TargetRange ' ワークブックを閉じる SourceWorkbook.Close SaveChanges:=False TargetWorkbook.Close SaveChanges:=True End Sub