From 49ef4c535811dc7eb0465af7c8e35a33893e093e Mon Sep 17 00:00:00 2001 From: Kenichiro NOGI Date: Fri, 18 Sep 2026 19:01:05 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=83=86=E3=83=BC=E3=83=96=E3=83=ABResi?= =?UTF-8?q?ze=E3=81=A7=E3=83=98=E3=83=83=E3=83=80=E3=81=AE=E3=81=BF(1?= =?UTF-8?q?=E8=A1=8C)=E3=81=B8=E3=81=AE=E4=B8=80=E6=99=82=E7=B8=AE?= =?UTF-8?q?=E5=B0=8F=E3=81=8CExcel=E3=81=AB=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=A8=E3=81=97=E3=81=A6=E6=8B=92=E5=90=A6=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前回のDataBodyRange Nothing対策で「一旦ヘッダ行のみにリサイズ」する方式にしたところ、 「テーブルには1行以上のデータが必要」という理由でExcel側にResize自体を拒否されるケースがあった。 現在の行数・目的の行数のいずれとも確実に異なる一時サイズ(rows.count+現在行数+1等)を経由する方式に変更し、 常に1行以上のデータ行を含んだ状態でリサイズすることで回避。 Co-Authored-By: Claude Sonnet 5 --- .../vba-files/Module/Module1.bas | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas b/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas index 7fca9b6e..6d27ffb6 100644 --- a/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas +++ b/XVBA/新版着工要因閲覧シート/vba-files/Module/Module1.bas @@ -240,7 +240,9 @@ Function exportCSVDataToSheet(csvData As Variant, targetSheet As String) ' e[uɃf[^ljiwb_s(arr(0,*))f[^݂̂DataBodyRangeɏށj 'OƓTCYւResizeExcelDataBodyRange̓ԂXVȂƂ邽߁A 'Uwb_ŝ݂ɃTCYĂړĨTCYɃTCY - tbl.Resize tbl.Range.Resize(1, maxCols) + Dim tempRows As Long + tempRows = tbl.Range.Rows.count + rows.count + 1 + tbl.Resize tbl.Range.Resize(tempRows, maxCols) tbl.Resize tbl.Range.Resize(rows.count, maxCols) Dim dataArr() As Variant @@ -545,7 +547,9 @@ Function getRecordsDataToSheet(records As Collection, targetSheet As String) 'e[u͈͂OƓTCYExcelDataBodyRange̓ԂXVȂƂ邽߁A 'Uwb_ŝ݂ɃTCYĂړĨTCYɃTCY - tbl.Resize tbl.Range.Resize(1, maxCols) + Dim tempRows As Long + tempRows = tbl.Range.Rows.count + flatRecords.count + 2 + tbl.Resize tbl.Range.Resize(tempRows, maxCols) tbl.Resize tbl.Range.Resize(flatRecords.count + 1, maxCols) Debug.Print " [DEBUG] tbl.Range.Address (after resize) = " & tbl.Range.Address Debug.Print " [DEBUG] tbl.DataBodyRange Is Nothing (after resize) = " & (tbl.DataBodyRange Is Nothing) @@ -710,7 +714,9 @@ Function exportCSVDataToExistingTable(csvData As Variant, tableName As String) 'OƓTCYւResizeExcelDataBodyRange̓ԂXVȂƂ邽߁A 'Uwb_ŝ݂ɃTCYĂړĨTCYɃTCY - tbl.Resize tbl.Range.Resize(1, maxCols) + Dim tempRows As Long + tempRows = tbl.Range.Rows.count + rows.count + 1 + tbl.Resize tbl.Range.Resize(tempRows, maxCols) tbl.Resize tbl.Range.Resize(rows.count, maxCols) Dim dataArr() As Variant