[{"data":1,"prerenderedAt":336},["ShallowReactive",2],{"content-/cf-excel-slides-batch":3,"all-pages-for-dir":334,"og-image-/cf-excel-slides-batch":335},{"id":4,"title":5,"body":6,"category":318,"description":319,"extension":320,"meta":321,"navigation":286,"path":322,"project_name":323,"published":324,"publishedAt":325,"seo":326,"stem":327,"tags":328,"todo":332,"updatedAt":332,"__hash__":333},"pages/2026-04/2026-04-28/cf-excel-slides-batch.md","CF精算表のExcel解説スライドをスキルで量産した記録",{"type":7,"value":8,"toc":308},"minimark",[9,22,27,32,36,43,56,59,69,72,75,79,86,101,105,185,189,239,246,249,252,272,275,304],[10,11,12,13,17,18,21],"p",{},"別リポジトリ ",[14,15,16],"code",{},"eurekapu-nuxt4"," で、",[14,19,20],{},"feature-slides"," スキルを使ってCF精算表のExcel解説スライドを2本量産した。スキル化した直後の検証も兼ねている。2〜3行のプロンプトを投げると、Excelの構造を読み取って章立てまで組み上がる手応えを掴めた。",[23,24,26],"h2",{"id":25},"背景-スキル化した直後の量産","背景: スキル化した直後の量産",[10,28,29,31],{},[14,30,20],{}," スキルは元々 Vue/TS/Pinia の機能解説用に作ったが、今回はExcelロジックの解説に組み替えて流用した。最初の対象は資本政策（CF305）、続けて借入金（CF301）。シートを読む順番、追跡対象のセル、章立ての粒度をスキル側に固定しておけば、実Excelファイルを差し替えるだけで似た構造の解説スライドが出力されるかを確かめたかった。",[23,33,35],{"id":34},"cf305-資本政策-38スライドを最初に量産","CF305 資本政策: 38スライドを最初に量産",[10,37,38,39,42],{},"対象Excelは ",[14,40,41],{},"CF_305_資本政策_c_CFWS_20260406_171925.xlsx","。3点セットで構成されている。",[44,45,46,50,53],"ul",{},[47,48,49],"li",{},"取引モジュール（TPL_資本政策）",[47,51,52],{},"MF仕訳出力",[47,54,55],{},"CFWS本体（年度シート + 年次推移表 + サマリー）",[10,57,58],{},"追跡対象は「設立出資 3,000,000円」。この1本の取引が取引モジュールから入って、仕訳に変換され、年次推移表で集計され、CFWSの行に着地するまでを6段階で追った。",[60,61,66],"pre",{"className":62,"code":64,"language":65},[63],"language-text","取引モジュール（黄）\n  → MF仕訳（ピンク）\n    → 年度シートの当期欄（青）\n      → 年次推移表の該当行（緑）\n        → CFWSの財務CF区分（緑）\n          → サマリーの「資本金の増加」行（水色）\n","text",[14,67,64],{"__ignoreMap":68},"",[10,70,71],{},"色で繋いだのは、Excelを読み慣れた人ほど「セルの色が同じ＝同じお金の流れ」と直感的に追えるから。形容詞で「分かりやすい」と書くより、6色のチェーンが一画面に並んだ瞬間、聞き手の指が画面上を順番に追い始める。",[10,73,74],{},"章10は当初テキスト中心の解説スライドを生成していたが、Excelの行番号と列レターが消えると「実物が想像できない」と感じたため、Excel忠実再現グリッドに差し替えた。横展開で全11スライドを差し替え。最終的に38スライドが揃った。",[23,76,78],{"id":77},"cf301-借入金-openpyxlの罠を踏みながら43スライド","CF301 借入金: openpyxlの罠を踏みながら43スライド",[10,80,81,82,85],{},"2本目は ",[14,83,84],{},"CF_301_借入金_c_CFWS_20260413_143228.xlsx","。日本政策金融公庫の長期借入 2,000,000円と、みずほ銀行の短期借入 1,000,000円の2契約が並ぶ。集計の値が揃わないと話にならないので、まず数値検証から入った。",[10,87,88,89,92,93,96,97,100],{},"ここで ",[14,90,91],{},"openpyxl"," を ",[14,94,95],{},"data_only=True"," で開いたのに、サマリーシートの値が全部 ",[14,98,99],{},"None"," で返ってくる事象に当たった。",[102,103,104],"h3",{"id":104},"試行錯誤の表",[106,107,108,130],"table",{},[109,110,111],"thead",{},[112,113,114,118,121,124,127],"tr",{},[115,116,117],"th",{},"#",[115,119,120],{},"テーマ",[115,122,123],{},"試したこと",[115,125,126],{},"結果",[115,128,129],{},"気づき",[131,132,133,151,168],"tbody",{},[112,134,135,139,142,145,148],{},[136,137,138],"td",{},"1",[136,140,141],{},"data_only=Trueで値がNone",[136,143,144],{},"Excelで一度開かれていないため数式キャッシュが空だった",[136,146,147],{},"LibreOffice CLIで再計算してから読み直し",[136,149,150],{},"openpyxlのdata_onlyはキャッシュ依存。生成直後のxlsxには使えない",[112,152,153,156,159,162,165],{},[136,154,155],{},"2",[136,157,158],{},"サマリーの値確認",[136,160,161],{},"全行が数式参照で構成されている",[136,163,164],{},"主要セルの値を手計算で照合",[136,166,167],{},"数式の妥当性は「貼り付け値」で見るほうが速い",[112,169,170,173,176,179,182],{},[136,171,172],{},"3",[136,174,175],{},"スライドはみ出し",[136,177,178],{},"章5でCFWS全体を1枚に詰め込もうとした",[136,180,181],{},"mode に応じてスライドサイズを切り替え",[136,183,184],{},"シート全体表示は縦長レイアウトに分けるべき",[102,186,188],{"id":187},"libreofficeで再計算する一手","LibreOfficeで再計算する一手",[60,190,194],{"className":191,"code":192,"language":193,"meta":68,"style":68},"language-bash shiki shiki-themes vitesse-light vitesse-light","soffice --headless --calc --convert-to xlsx \\\n  --outdir /tmp/recalc \\\n  CF_301_借入金_c_CFWS_20260413_143228.xlsx\n","bash",[14,195,196,222,233],{"__ignoreMap":68},[197,198,201,205,209,212,215,219],"span",{"class":199,"line":200},"line",1,[197,202,204],{"class":203},"senZ8","soffice",[197,206,208],{"class":207},"snbK4"," --headless",[197,210,211],{"class":207}," --calc",[197,213,214],{"class":207}," --convert-to",[197,216,218],{"class":217},"sdGka"," xlsx",[197,220,221],{"class":207}," \\\n",[197,223,225,228,231],{"class":199,"line":224},2,[197,226,227],{"class":207},"  --outdir",[197,229,230],{"class":217}," /tmp/recalc",[197,232,221],{"class":207},[197,234,236],{"class":199,"line":235},3,[197,237,238],{"class":217},"  CF_301_借入金_c_CFWS_20260413_143228.xlsx\n",[10,240,241,242,245],{},"このひと手間を挟むと、openpyxl側で ",[14,243,244],{},"wb = load_workbook(path, data_only=True)"," がキャッシュ済みの値を返してくれた。2022年の利息 15,056円、長期借入 2,000,000円が手計算と一致したところで、ようやくスライド生成に進めた。",[10,247,248],{},"スライドは43枚。検証はスキルのStep 6に従って Chrome DevTools MCP で1枚ずつスクリーンショットを撮り、はみ出し・色の分断・参照矢印のズレを確認した。",[23,250,251],{"id":251},"学び",[44,253,254,260,266,269],{},[47,255,256,257,259],{},"量産フェーズに入った瞬間、",[14,258,20],{}," スキルが2〜3行プロンプトで動く効率を体感した。最初の1本に2時間かけても、2本目は30分で出力まで辿り着いた",[47,261,262,263,265],{},"Excelの値が ",[14,264,99],{}," で返ってきたら、まずLibreOfficeで再計算する。これがほぼ唯一の解",[47,267,268],{},"「同じシート、違う注目領域」のパターンを使えば、CFWSの上半分・下半分を別スライドに分けず、1枚で見せられる",[47,270,271],{},"取引モジュール → 仕訳 → 年次推移表 → CFWS の追跡チェーンを「色」で繋げると、Excel理解者の視線が画面上を勝手に追い始める",[23,273,274],{"id":274},"明日やること",[44,276,279,289,298],{"className":277},[278],"contains-task-list",[47,280,283,288],{"className":281},[282],"task-list-item",[284,285],"input",{"disabled":286,"type":287},true,"checkbox"," CF302（売掛金）と CF303（買掛金）も同じ手順で量産する",[47,290,292,294,295,297],{"className":291},[282],[284,293],{"disabled":286,"type":287}," LibreOffice再計算ステップを ",[14,296,20],{}," スキルのStep 2に組み込む",[47,299,301,303],{"className":300},[282],[284,302],{"disabled":286,"type":287}," 章10の「Excel忠実再現グリッド」テンプレートをスキル側にコンポーネント化する",[305,306,307],"style",{},"html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .snbK4, html code.shiki .snbK4{--shiki-default:#A65E2B;--shiki-dark:#A65E2B}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":68,"searchDepth":224,"depth":224,"links":309},[310,311,312,316,317],{"id":25,"depth":224,"text":26},{"id":34,"depth":224,"text":35},{"id":77,"depth":224,"text":78,"children":313},[314,315],{"id":104,"depth":235,"text":104},{"id":187,"depth":235,"text":188},{"id":251,"depth":224,"text":251},{"id":274,"depth":224,"text":274},"dev","feature-slidesスキルを使って、資本政策と借入金のCF精算表Excelファイルから38スライド・43スライドを自動生成。色で繋がる追跡チェーンと、openpyxlのdata_only問題への対処を記録する。","md",{},"/cf-excel-slides-batch","mdx-playground",false,"2026-04-28T00:00:00.000Z",{"title":5,"description":319},"2026-04/2026-04-28/cf-excel-slides-batch",[329,91,20,330,331],"excel","cf-worksheet","claude-code",null,"HDjZlcqVKqJjTR-WBIJHicCghPmXU0bK_ITjfOUijzg",[],"https://log.eurekapu.com/favicon.svg",1777533702764]