From 6dc6ede9a90aa61cc617b059b6a267962140eaa3 Mon Sep 17 00:00:00 2001 From: Kenichiro NOGI Date: Mon, 14 Sep 2026 10:01:00 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=96=B6=E6=A5=AD=E6=89=80=E3=83=9E?= =?UTF-8?q?=E3=82=B9=E3=82=BFExport=E3=82=92=E6=97=A2=E5=AD=98=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=83=96=E3=83=AB=E3=81=B8=E3=81=AE=E4=B8=8A=E6=9B=B8?= =?UTF-8?q?=E3=81=8D=E5=B0=82=E7=94=A8=E3=81=AB=E5=A4=89=E6=9B=B4=E3=80=81?= =?UTF-8?q?=E6=96=B0=E8=A6=8F=E3=82=B7=E3=83=BC=E3=83=88=E3=83=BB=E3=83=86?= =?UTF-8?q?=E3=83=BC=E3=83=96=E3=83=AB=E4=BD=9C=E6=88=90=E3=82=92=E5=BB=83?= =?UTF-8?q?=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit exportCSVDataToSheetはtargetSheetと同名のテーブルを探す仕様のため、実際のテーブル名が一致せず新規シート・テーブルが作られてしまっていた。 exportCSVDataToExistingTableを新規追加し、テーブル名を問わず「営業所」シート上の既存テーブル(1つ目)に直接上書きする方式に変更。シート・テーブルが存在しない場合は新規作成せずエラー表示のみ。 Co-Authored-By: Claude Sonnet 5 --- .../vba-files/Module/Module1.bas | 81 +++++++++++++++++-- 1 file changed, 76 insertions(+), 5 deletions(-) diff --git a/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas b/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas index a5f67898..3a528182 100644 --- a/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas +++ b/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas @@ -599,10 +599,81 @@ Sub SetupFilterSorterTables() End Sub '****************************************************************************** -'e[uID 96243icƏ}X^jExportőS擾AucƏvV[g̃e[uXV -'\[gNumAŌŒBFilter͎gpȂBwb_śucƏvV[g̊e[û̂̂܂܎gA -'GNX|[gCSṼwb_si1sځĵ͎ĂiexportCSVDataToSheet͊e[uꍇA -'wb_sf[^̂ݍXVdl̂߁Â܂ܗpj +'ɑ݂V[gEe[uɂ̂CSVf[^iwb_sj㏑B +'e[u͖킸V[g̍ŏ̃e[uΏۂɂBV[ge[u݂Ȃꍇ +'VK쐬bZ[WoďI +Function exportCSVDataToExistingTable(csvData As Variant, targetSheet As String) + Debug.Print "CSVf[^e[uɏo͊Jn: " & targetSheet + + Dim ws As Worksheet + On Error Resume Next + Set ws = ThisWorkbook.Sheets(targetSheet) + On Error GoTo 0 + + If ws Is Nothing Then + MsgBox "V[g݂܂: " & targetSheet, vbExclamation + Exit Function + End If + + If ws.ListObjects.count = 0 Then + MsgBox "e[u݂܂: " & targetSheet, vbExclamation + Exit Function + End If + + Dim tbl As ListObject + Set tbl = ws.ListObjects(1) + + Dim i As Long, j As Long + Dim arr() As Variant + Dim maxCols As Long + + Dim rows As Collection + Set rows = ParseCsv(csvData) + + If rows.count <= 1 Then + MsgBox "f[^݂܂iwb_̂݁j: " & targetSheet, vbExclamation + Exit Function + End If + + maxCols = 0 + Dim rowArr As Variant + For Each rowArr In rows + If UBound(rowArr) + 1 > maxCols Then + maxCols = UBound(rowArr) + 1 + End If + Next rowArr + + ReDim arr(0 To rows.count - 1, 0 To maxCols - 1) + + i = 0 + For Each rowArr In rows + For j = LBound(rowArr) To UBound(rowArr) + arr(i, j) = rowArr(j) + Next j + i = i + 1 + Next rowArr + + If Not tbl.DataBodyRange Is Nothing Then + tbl.DataBodyRange.ClearContents + End If + + tbl.Resize tbl.Range.Resize(rows.count, maxCols) + + Dim dataArr() As Variant + ReDim dataArr(1 To rows.count - 1, 1 To maxCols) + For i = 1 To rows.count - 1 + For j = 1 To maxCols + dataArr(i, j) = arr(i, j - 1) + Next j + Next i + tbl.DataBodyRange.Value = dataArr + + Debug.Print "CSVf[^e[uɏo͊: " & targetSheet +End Function + +'e[uID 96243icƏ}X^jExportőS擾AucƏvV[g̊e[uXV +'\[gNumAŌŒBFilter͎gpȂBwb_s͊e[û̂̂܂܎gA +'GNX|[gCSṼwb_si1sځĵ͎ĂBVKV[gEe[u̍쐬͍sȂ Sub runSalesOfficeExport() Call init @@ -620,6 +691,6 @@ Sub runSalesOfficeExport() If IsEmpty(resData) Or resData = "" Then Debug.Print "f[^擾ł܂ł" Else - Call exportCSVDataToSheet(resData, "cƏ") + Call exportCSVDataToExistingTable(resData, "cƏ") End If End Sub \ No newline at end of file