-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

