-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