diff --git a/vba_code_kukan_detail_master.txt b/vba_code_kukan_detail_master.txt index a275bbd..21b3624 100644 --- a/vba_code_kukan_detail_master.txt +++ b/vba_code_kukan_detail_master.txt @@ -1,5 +1,6 @@ ' CSV Header Constants Const CSV_HEADER As String = "利用区間コード,券種,コード,名称,1箇月運賃/販売額,定期額/券1(額)/利用額,定期支給期間/券1(枚)/特別料金,特別料金/券2(額),券2(枚),端数(額),特別料金" +Const CSV_HEADER_ARRAY As Variant = Array("利用区間コード", "券種", "コード", "名称", "1箇月運賃/販売額", "定期額/券1(額)/利用額", "定期支給期間/券1(枚)/特別料金", "特別料金/券2(額)", "券2(枚)", "端数(額)", "特別料金") Private Sub Worksheet_Change(ByVal Target As Range) ' === Generate F dropdown based on G column (matching left of colon) === @@ -176,8 +177,20 @@ Sub ImportMasterDetailData() If UBound(lines) >= 0 And Trim(lines(0)) <> "" Then Dim csvHeader As String csvHeader = Trim(lines(0)) - If csvHeader <> CSV_HEADER Then - MsgBox "CSV header mismatch." & vbCrLf & "Expected: " & CSV_HEADER & vbCrLf & "Got: " & csvHeader, vbExclamation + ' Validate header by comparing each field + Dim headerFields As Variant + headerFields = Split(csvHeader, ",") + Dim headerMismatch As Boolean + headerMismatch = False + Dim k As Long + For k = 0 To UBound(CSV_HEADER_ARRAY) + If k > UBound(headerFields) Or Trim(headerFields(k)) <> CSV_HEADER_ARRAY(k) Then + headerMismatch = True + Exit For + End If + Next k + If headerMismatch Or UBound(headerFields) <> UBound(CSV_HEADER_ARRAY) Then + MsgBox "CSV header mismatch.", vbExclamation Exit Sub End If End If @@ -383,7 +396,7 @@ Sub ExportMasterDetailData() ' Use constant for header Dim headerList As Variant - headerList = Split(CSV_HEADER, ",") + headerList = CSV_HEADER_ARRAY ' Build CSV Dim csvContent As String