top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(25)

シート・セル操作(20)

図形操作(15)

設計思想(13)

講座実施報告(12)

ユーザーフォーム(10)

コード自動生成(10)

ココナラ(9)

数学(8)

文字列操作(8)

開発効率化(6)

GAS(5)

副業(5)

アニメーション(5)

技術解説(4)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

クリップボード(4)

条件付き書式(4)

その他(4)

Webアプリ(4)

OneDrive(3)

イベントプロシージャ(3)

小説(3)

HTML(3)

JavaScript(3)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

公開ツール(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

Antigravity(2)

デスクトップアプリ(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

Excel(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

VBA(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

チェックボックス(1)

PowerShell(1)

python(1)

Excel VBAで在庫CSV更新を自動化|既存マクロ改修・予約販売対応の開発事例

Excel VBAで在庫CSV更新を自動化|既存マクロ改修・予約販売対応の開発事例

ECサイトや卸販売サイトを運用していると、販売チャネルごとに異なるCSV形式へ在庫情報を反映する作業が発生します。在庫数、商品コード、出荷予定日、予約販売の設定などを手作業で編集していると、入力ミスやファイルの取り違えが起きやすくなります。

今回は、既存のExcelマクロ在庫更新ツールをもとに、販売チャネル別の在庫CSV更新へ対応できるよう改修した事例をご紹介します。実データや顧客情報は伏せ、処理内容は匿名化した形で紹介します。

上の図は、元在庫表を基準に、販売チャネルごとのCSVへ在庫数・出荷予定情報を反映する仕組みの全体像です。バックアップやエラーログも含め、実運用で安全に使えるように設計しています。


ご相談内容

既存のExcelマクロを使って在庫更新を行っていたものの、販売サイト側のCSV形式に合わせた更新が難しくなっているというご相談でした。特に、転記元の在庫表と転記先CSVで列構造が異なるため、従来のツールでは対応しきれない状態でした。

ご相談を整理すると、必要とされていたのはおおむね次のような内容でした。

  • 新しいCSV形式や、追加された販売チャネルにも対応したい

  • 在庫数を商品コードで照合して、正しい商品へ反映したい

  • 商品ごとに係数を掛けて在庫数を計算する必要がある

  • 予約販売や入荷予定にも対応したい

  • 手作業ではミスが起きやすいので、処理を自動化したい

在庫数の反映だけでなく、商品ごとの係数計算、エラーチェック、バックアップ保存、予約販売用の出荷予定情報の反映なども含めて、業務全体を安全に回せる形にすることが求められていました。

業務上の課題:販売チャネルごとにCSV形式が異なり、手作業ではミスが起きやすい

この種の業務では、元データとCSVの出所を一般的な流れで整理すると分かりやすくなります。元データは、社内で管理している在庫表や、仕入・物流・販売管理の流れで使用される在庫データを想定しています。一方、転記先CSVは、販売サイトや卸販売サイトへ取り込むための在庫データとして使用されます。つまり、社内側の在庫情報を、販売チャネル側で利用できる形式に整えることが、このツールの役割です。

ここで問題になるのが、ファイルごとの形式の違いです。

  • 元在庫表と転記先CSVで列構造が異なる

  • 商品コード、在庫数、出荷予定日の位置がファイルごとに違う

  • CSVを手作業で開いて編集すると、文字化けや保存形式の問題も起きやすい

  • 古いファイルを更新してしまう、どのファイルを使ったか分からなくなる

  • マイナス在庫、予約販売、入荷予定など、単純な在庫更新では処理しきれない条件がある

同じ在庫情報であっても、販売チャネルごとに整形・転記する必要があり、手作業では商品コードの照合ミスや在庫数の入力ミスが起きやすい状況でした。

構築した仕組み:元在庫表と販売サイト用CSVを照合・更新するツール

そこで、商品コードをキーにして元在庫表と転記先CSVを照合し、在庫数や出荷予定情報を自動で反映できる仕組みを構築しました。処理の流れは次の通りです。

元在庫表
  ↓ 商品コードで照合
Excel VBA更新ツール
  ↓ 在庫数・出荷予定日・予約販売情報を整形
販売チャネルA用CSV / 販売チャネルB用CSV
  ↓
バックアップ保存・エラーログ出力

Excel上の操作画面から、元在庫表と転記先CSVを選択して処理を実行します。商品コードをキーに両者を照合し、一致した商品の在庫数を更新します。その際、マイナス在庫は0として扱うなど、業務ルールに沿った変換を行い、商品ごとの係数マスタを参照して在庫数を計算します。処理が終わると、結果とエラー内容が確認できる形で出力されます。

下の図は、設定内容に基づいて在庫数がどのように更新されるかを、読込・照合から計算ロジック、書き戻し、エラーログまで順に示したものです。

Excel在庫更新ツールの全体処理フロー(読込・商品コード照合・在庫数の計算・転記・エラーログ)

ポイントは、単純なコピーではなく、商品コードをキーに照合したうえで、販売チャネルごとに必要な列へ反映している点です。これにより、列構成が異なるCSVでも、同じ元在庫表から安全に更新できます。

列設定を変更できる設計:列番号を固定せず、設定シートで変更できる

既存マクロにありがちな課題として、特定の列番号がプログラム内に直接書かれている、というものがあります。この場合、CSVの列構成が少し変わっただけでも、プログラムの修正が必要になってしまいます。

販売サイトのCSV仕様は、運用中に列構成や項目名が変わる可能性があります。そこで今回は、商品コード列、在庫数列、出荷予定日列などをプログラムに固定せず、設定シートから変更できるようにしました。

  • 商品コード列、在庫数列、出荷予定日列などを画面上で指定できる

  • 販売チャネルごとに列構成が異なっても対応しやすい

  • 軽微なCSV仕様変更であれば、プログラムを修正せず現場側で対応しやすい

将来的なCSV仕様変更にも備えた設計にすることで、改修のたびに開発へ依頼する負担を減らすことを狙っています。

バックアップ・エラーログによる安全運用

業務データを更新するツールでは、処理でつまずいた場合に元へ戻せることが重要です。そこで、更新前後の安全性を高める仕組みを組み込みました。

  • 更新前のCSVを自動バックアップ

  • 必要に応じて元在庫表側もバックアップ

  • 処理に使ったファイルを後から確認しやすくした

  • 転記元のみに存在する商品コード、転記先のみに存在する商品コードを検出

  • 重複データや、係数マスタに存在しない商品コードを検出

  • 検出した内容をエラーログとして一覧化

これらにより、担当者がCSVを手作業で編集する必要が減り、商品コードの照合ミスや在庫数の入力ミスを防ぎやすくなります。また、処理前のバックアップやエラーログを残すことで、万が一の確認・復旧もしやすくなります。

予約販売・入荷予定への追加対応

納品後、実運用の中で追加のご要望をいただき、通常の在庫更新だけでなく、入荷予定がある商品の予約販売にも対応しました。

具体的には、入荷予定がある商品について、出荷可能日や予約販売用の在庫数を販売チャネル別のデータへ反映する処理を追加しています。商品名の先頭に出荷可能日を付与するなど、販売画面側で必要になる情報を自動で整形し、在庫がプラスに戻った場合は予約販売用の表示を外すといった、運用に合わせた処理も加えました。

複数チャネルで処理内容が異なるため、チャネルごとに処理を分けて実装しています。これにより、在庫が一時的に不足している商品でも、入荷予定をもとに販売設定を行いやすくなり、販売機会を逃しにくい運用につながります。

開発時に意識したこと:実装前に図解で仕様を整理

業務ツールでは、実装力だけでなく、仕様を正しく整理することが重要だと考えています。今回も、依頼内容だけでは仕様が曖昧な部分があったため、実際のファイル構造を見ながら処理の流れを整理し、赤枠・矢印・吹き出しなどを使った確認資料を作成しました。

  • どのファイルを変更するのか

  • どの列に書き込むのか

  • バックアップの対象はどこまでか

こうした点を事前にすり合わせ、認識違いを防いでから開発に入ることで、手戻りを抑えるようにしています。

このツールが役立つ場面

今回のような在庫管理・CSV更新業務は、次のような場面で活用できます。

  • ECサイトと卸販売サイトの在庫データをまとめて更新したい

  • 仕入先・物流側から届く在庫表をもとに、販売サイト用CSVを作りたい

  • 複数販売チャネルのCSVフォーマットが違っていて手作業が多い

  • 入荷予定日をもとに予約販売の設定をしたい

  • 商品コードをキーにして在庫数を安全に反映したい

  • 更新前のファイルを自動バックアップしたい

  • 手作業によるCSV編集ミスを減らしたい

  • 既存マクロを今の業務に合わせて作り直したい

導入による効果

手作業を減らすだけでなく、更新ミスや運用面の不安を軽減できる点が、このツールの効果です。

  • CSV編集作業の時間短縮

  • 商品コード照合ミス、在庫数入力ミスの削減

  • ファイルの取り違え防止

  • バックアップによる復旧性の向上

  • エラーログによる確認作業の効率化

  • 仕様変更時の改修負担の軽減

  • 追加機能にも対応しやすい構成

  • 現場担当者がボタン操作で処理を進められる

派手な機能ではありませんが、こうした積み重ねが、日々の在庫更新を安定して回すことにつながります。

まとめ

今回の事例では、既存のExcelマクロをもとに、販売チャネル別の在庫CSV更新に対応した業務ツールへ改修しました。在庫数の自動更新だけでなく、列設定、係数マスタ、バックアップ、エラーログ、予約販売対応まで含めることで、実運用に合わせた仕組みとして整えています。

Excel VBAは、すでにExcelやCSVで業務を回している現場にとって、既存の運用を大きく変えずに自動化しやすい選択肢です。在庫更新、CSV変換、販売サイト向けデータ作成などでお困りの場合は、現在のファイル構成を確認したうえで、業務に合わせた自動化をご提案できます。


Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

softex-celwareロゴ 透過 横長.png

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page