-ChatGPT4-
-ChatGPT4-に質問
新しいVBAモジュールを作成してください。実行ファイルに立替精算勘定科目変換シートと一般経費勘定科目変換シートがあります。ダイアログボックスで選択したInvoice_details(編集用)シートもあります。立替精算勘定科目変換シートのA列と開いたInvoice_details(編集用)シートのBH列が一致した時、Invoice_details(編集用)シートの最終列のー9列目に立替精算勘定科目変換シートのB列をInvoice_details(編集用)シートの最終列のー7列目に立替精算勘定科目変換シートのC列を代入。一般経費勘定科目変換シートのA列と開いたInvoice_details(編集用)シートのF列が一致した時、Invoice_details(編集用)シートの最終列のー9列目に一般経費勘定科目変換シートのB列をInvoice_details(編集用)シートの最終列のー7列目に一般経費勘定科目変換シートのC列を代入。
ChatGPT4の回答
Sub UpdateInvoiceDetails()
Dim wsReimburse As Worksheet
Dim wsExpenses As Worksheet
Dim wbInvoice As Workbook
Dim wsInvoicedetails As Worksheet
Dim fd As FileDialog
Dim strFilePath As String
Dim lRowInvoice As Long, lRowReimburse As Long, lRowExpenses As Long
Dim lColInvoice As Long
Dim i As Long, j As Long, k As Long
' 現在のワークブックのシートを設定
Set wsReimburse = ThisWorkbook.Worksheets("立替精算勘定科目変換シート")
Set wsExpenses = ThisWorkbook.Worksheets("一般経費勘定科目変換シート")
' ファイルピッカーダイアログボックスとしてFileDialogオブジェクトを作成
Set fd = Application.FileDialog(msoFileDialogFilePicker)
' ダイアログボックスを表示
If fd.Show = -1 Then
' 選択したファイルのパスを取得
strFilePath = fd.SelectedItems(1)
' 選択したワークブックを開く
Set wbInvoice = Workbooks.Open(strFilePath)
' Invoice_details(編集用)シートを設定
On Error Resume Next
Set wsInvoicedetails = wbInvoice.Worksheets("Invoice_details(編集用)")
On Error GoTo 0
If Not wsInvoicedetails Is Nothing Then
' 各シートの最終行を取得
lRowInvoice = wsInvoicedetails.Cells(Rows.Count, "BH").End(xlUp).Row
lRowReimburse = wsReimburse.Cells(Rows.Count, "A").End(xlUp).Row
lRowExpenses = wsExpenses.Cells(Rows.Count, "A").End(xlUp).Row
' Invoice_detailsシートの最終列を取得
lColInvoice = wsInvoicedetails.Cells(1, Columns.Count).End(xlToLeft).Column
' Invoice_detailsシートをループ
For i = 2 To lRowInvoice
' 立替精算勘定科目変換シートをループ
For j = 2 To lRowReimburse
If wsInvoicedetails.Cells(i, "BH").Value = wsReimburse.Cells(j, "A").Value Then
wsInvoicedetails.Cells(i, lColInvoice - 9).Value = wsReimburse.Cells(j, "B").Value
wsInvoicedetails.Cells(i, lColInvoice - 7).Value = wsReimburse.Cells(j, "C").Value
End If
Next j
' 一般経費勘定科目変換シートをループ
For k = 2 To lRowExpenses
If wsInvoicedetails.Cells(i, "F").Value = wsExpenses.Cells(k, "A").Value Then
wsInvoicedetails.Cells(i, lColInvoice - 9).Value = wsExpenses.Cells ( k, "B").Value
wsInvoicedetails.Cells(i, lColInvoice - 7).Value = wsExpenses.Cells(k, "C").Value
End If
Next k
Next i
' Invoice_detailsワークブックを保存して閉じる
wbInvoice.Close SaveChanges:=True
Else
MsgBox "Invoice_details(編集用)シートが選択されたワークブックに見つかりません。"
End If
Else
MsgBox "ファイルが選択されませんでした。"
End If
End Sub

