-ChatGPT-
-ChatGPT-4の回答
Sub ImportUniqueData()
' 必要な変数を定義する
Dim SourceWorkbook As Workbook
Dim TargetWorkbook As Workbook
Dim SourceWorksheet As Worksheet
Dim TargetWorksheet As Worksheet
Dim FileDialog As FileDialog
Dim FilePath As String
Dim LastSourceRow As Long, LastTargetRow As Long, i As Long
Dim IsUnique As Boolean
' 現在のブックと立替精算変換シートを設定する
Set TargetWorkbook = ThisWorkbook
Set TargetWorksheet = TargetWorkbook.Worksheets("立替精算変換")
' ダイアログボックスを設定して、ファイルを選択させる
Set FileDialog = Application.FileDialog(msoFileDialogFilePicker)
FileDialog.AllowMultiSelect = False
FileDialog.Title = "ファイルを選択してください"
If FileDialog.Show = -1 Then
FilePath = FileDialog.SelectedItems(1)
Else
Exit Sub
End If
' 選択されたファイルを開き、Invoice_details(編集用)シートを設定する
Set SourceWorkbook = Workbooks.Open(FilePath)
Set SourceWorksheet = SourceWorkbook.Worksheets("Invoice_details(編集用)")
' ソースシートとターゲットシートの最後の行を取得する
LastSourceRow = SourceWorksheet.Cells(Rows.Count, "BI").End(xlUp).Row
LastTargetRow = TargetWorksheet.Cells(Rows.Count, "A").End(xlUp).Row
' ソースシートのデータをターゲットシートにコピーする(重複しないデータのみ)
For i = 1 To LastSourceRow
IsUnique = True
For j = 1 To LastTargetRow
' 重複するデータがある場合、IsUniqueをFalseに設定
If SourceWorksheet.Cells(i, "BI").Value = TargetWorksheet.Cells(j, "A").Value Then
IsUnique = False
Exit For
End If
Next j
' 重複しないデータのみターゲットシートに追加する
If IsUnique Then
LastTargetRow = LastTargetRow + 1
TargetWorksheet.Cells(LastTargetRow, "A").Value = SourceWorksheet.Cells(i, "BI").Value
End If
Next i
' ソースブックを閉じる(変更を保存しない)
SourceWorkbook.Close SaveChanges:=False
' 完了メッセージを表示する
MsgBox "データがインポートされました。"
End Sub

