-ChatGPT-4にVBAでダイアログボックスで選択したファイルのInvoice_details(編集用)シートのBI列のデータをこのブックの立替精算変換シートのA列に文字列が重複しないデータだけ追加してください

-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

タイトルとURLをコピーしました