面倒だった商品原稿のとりまとめを自動化してみようとChatGPTと二人三脚しました。

__お疲れさまです。__
ECサイトを運営する部署に配属されたデジタル絶賛奮闘中のアナログ人間です。
私は、某小売企業の商品をオンラインでも販売するサイトで働いています。サイトの売り上げ拡大のためにセールやキャンペーンを実施していくため、企画・製作が日々のミッションとなっております。

![58b40e46-8d3d-4be4-ba8b-aade7f64b5e2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/dab8c0f1-0553-5782-cda7-bb798ece731a.jpeg)

普段のお仕事の中ではおおまかに、
①\.セールを開催したりキャンペーンを実施する。
②\.①をお客さまに伝えて、サイトに来てもらうための販促活動を行っていくためのコンテンツ（媒体）作り。
②\.②をみたりしてサイトに来てくれたお客さまが着地するページ：LP（ランディングページ）を製作し、商品購入の意思決定をしてもらう商品ページへの送客することを行ってます。
自部署のサイトでは、複数の商品調達部門の商品をとりあつかうため、コンテンツ作成時に商品原稿のとりまとめが必要となっております。
本日は、この前学んだChatGPTに助けてもらいながら商品原稿のとりまとめ作業を楽にする！！に取り組んだ過程を記事にしたいと思います。

自分が今の部署に来た経緯や、今の部署についてはこちらの記事でも記載しております。よろしければこちらもご覧ください。

https://note.com/great_phlox6652/n/n0f01b80f4197

# そもそも商品原稿って?
自部署では、紙媒体ではイメージのつきやすいチラシやカタログ・店頭でのPOP作成、デジタル媒体では、複数の商品が掲載されているページやディスプレイ広告など複数のコンテンツを作成しています。
商品を調達し商品情報の掲載されているページなどを作るチームと、媒体そのものを製作する製作チームとの間で商品情報をやり取りする際に商品原稿が必要となります。
商品原稿には製作に必要な情報、産地やメーカー名、商品名、型番、容量、売価、商品ページのURLなどが記載されています。

![原稿イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/40f1b1f7-50ce-8dd5-4817-8af36a9d1698.png)

こちらに記載されている情報をもとに、商品のコマを作成していきます。
イメージはこんな感じです。Googleのショッピングをキャプチャしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/c4322d1a-47ef-246c-f1fa-a8a8dcc91425.png)

複数の商品調達をする部署から掲載用の商品原稿を回収し、製作する部署に渡急いて制作してもらうように1つに取りまとめた原稿を作成する作業を自部署ではExcelの所定フォーマットでおこなっています。その際は残念ながらアナログな手作業でコピペして行っています。
これがなかなかに工数をとられストレスのもとになります。この負の状態を自動化することで時間の削減、そして手作業によるミスの解消をする。
そのために、ChatGPTに助けてもらいながらExcelにマクロを組み込み簡単にしていこうと思います。

# 今回使ったツール
+ ChatGPT
+ Excel

# そもそもマクロって何？　教えてChatGPT
さすがに自称アナログ人間でもExcelにマクロという機能があるということは知ってます。マクロ組んだらいいかな？のような会話などで耳にしたり、買っただけで全く読みこまなかったエクセルの本にも書いてあった気がします。
先週ChatGPTを使ってツールを作ってみる研修に参加する機会をえたのでChatGPTにまずは、わかりやすくマクロの解説をお願いしました。
__最初のプロンプト送信__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/8ef03650-b776-dd2c-4f79-fb7ed02d4713.png)
なるほど、まずは下準備ということですね。いったん保存しておこう。
と思ったら、中身が無いのでうまく保存ができなかった。今度は何をしたいかを伝えて解決方法を教えてもらいます。
__次のプロンプト送信__

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/248a4500-550a-6e29-78d0-dd9e81973a08.png)
SharePoint上にある複数のExcelファイルを集計して、一つのExcelファイルに自動的にコピー・貼り付ける方法は、VBA（マクロ）を使って自動化することができます。以下の手順でやってみましょう。

### 前提条件
- SharePointに保存されているExcelファイルにアクセスできるURLまたはリンクがあること。
- 各Excelファイルの構成（列や行の位置）が同じであること。

### 手順1: Excelマクロの作成
1. **新しいExcelファイルを開く**
   - すべてのデータを集計するファイルを新規作成します。

2. **VBAエディタを開く**
   - Excelで「Alt + F11」を押してVBAエディタを開きます。

3. **新しいモジュールを挿入**
   - 「挿入」→「モジュール」で新しいモジュールを挿入します。

4. **コードを入力**
   以下のコードをモジュールにコピーして貼り付けます。これにより、SharePoint上の複数のExcelファイルからデータをコピーし、集計ファイルに自動的に貼り付けることができます。

```vba
Sub ConsolidateFromSharePoint()

    ' 変数の定義
    Dim ws As Worksheet
    Dim folderPath As String
    Dim fileName As String
    Dim sh As Worksheet
    Dim lastRow As Long
    Dim destSheet As Worksheet
    Dim destRow As Long
    Dim wbSource As Workbook
    Dim sourceSheet As Worksheet
    
    ' SharePointフォルダのURL
    folderPath = "https://your-sharepoint-site/path-to-folder/"
    
    ' コピー先のシート
    Set destSheet = ThisWorkbook.Sheets("Sheet1") ' データを貼り付けるシート名
    destRow = 1 ' 貼り付け開始行
    
    ' フォルダ内のすべてのExcelファイルをループ
    fileName = Dir(folderPath & "*.xlsx")
    
    Do While fileName <> ""
        ' ファイルを開く
        Set wbSource = Workbooks.Open(folderPath & fileName)
        
        ' コピー元のシートを指定（最初のシート）
        Set sourceSheet = wbSource.Sheets(1)
        
        ' コピーする範囲を取得（例：A1から最後のデータまで）
        lastRow = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
        sourceSheet.Range("A1:Z" & lastRow).Copy
        
        ' コピー先に貼り付け
        destSheet.Cells(destRow, 1).PasteSpecial Paste:=xlPasteValues
        destRow = destRow + lastRow
        
        ' ファイルを閉じる
        wbSource.Close False
        
        ' 次のファイルに移動
        fileName = Dir
    Loop
    
    ' 完了メッセージ
    MsgBox "データの集計が完了しました！"
    
End Sub
```

### 手順2: コードの調整
- `folderPath = "https://your-sharepoint-site/path-to-folder/"` には、実際のSharePointフォルダのURLを指定してください。
- `Set destSheet = ThisWorkbook.Sheets("Sheet1")` には、データを貼り付けるシートを指定してください。
- `Range("A1:Z" & lastRow)` では、必要に応じて範囲を調整します（A1から最後のデータまでコピーします）。

### 手順3: マクロの実行
1. VBAエディタを閉じて、Excelに戻ります。
2. [開発]タブから[マクロ]をクリックし、先ほど作成したマクロを選択して「実行」をクリックします。

これで、指定したフォルダ内のすべてのExcelファイルからデータを自動で集計し、一つのファイルにまとめることができます。

必要に応じて調整できますので、何かあれば教えてください。

上記の答えをもらったけど早速手順側からない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/4727ade8-1968-52a5-7289-6cdb1f29a38c.png)

すぐ聞けるのってとても便利だ！！すでにChatGPT尊敬しだしました。
わからない単語もすぐ教えてくれる。教えたがり最高です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/37f106e6-1bcc-da85-b8f6-d8659d6219b6.png)
なるほど、マクロ機能というのはVBAというソースコードを書いて指示するんだな。と理解していく中のことです。

## 何か違う…
ChatGPTからもらったコードに沿って、URLをいれていくうちにプロントがうまく伝わっていなかったことに気づきました。
__再度のプロンプト送信__

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/81b47f17-9908-b1f8-37e9-5c3183a07cf7.png)
コードを見たらそれでもなんか違っている。
__再度プロンプト送信__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/474456d2-149c-9ab3-99b4-b22f5f5d6466.png)
![screencapture-chatgpt-c-9c3e30a0-f1e2-4d15-a738-9da42c19379a-2024-08-27-20_37_21-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/51fb1e57-c242-cfeb-0af7-89f31c1f904f.png)

ChatGPT先生とのキャッチボールを重ねてやっと出来上がったものはどうなったかというと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/e8fbcb8f-42a7-5f66-9a51-847f97305d91.png)

__エラー連発__

寝不足とラリーの応酬の末に、自分でも何しているのかわからなくなってきましたので一度、プロンプトを整えて再チャレンジしました。

__あらためてプロンプト送信__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/c364e987-b616-b7b9-a12f-16c718a10a31.png)
今度こそはと思ったもののなかなかマクロが動いてくれません。プロンプトの書き方を変えて再度チャレンジ。

__プロンプト送信__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/d1d1a68a-bce4-514f-dc3d-6cda51638b09.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/498d4888-ab84-de40-b301-927754e014cd.png)
マクロではないのかあ。聞き方を変えて丁寧に聞いてみました。
今度は　__Power Query機能__　という新しい解決策を提示してくれました。
早速指示に従って、Excelのデータタブからデータの取得を始めます。
と思ったら、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/9543befc-c664-6a89-ba3c-0865c64869f5.png)

アクセスがどうもできなかったということにようやく気付きました。知人に話してみたところどうも会社のセキュリティ上権限がないと難しいとのこと。
![pose_ochikomu_businessman.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/34bf214f-9474-2c44-9a27-f86d766b97a7.png)

ダウンロードの手間はあるけどローカルにファイルを落として三度目の正直！！再チャレンジです。

__再度別な形でプロンプトを送信__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/bebf4a09-177d-9a92-c040-785d4ec5587d.png)
最初のプロンプトから、デバック、該当箇所のソースとエラー内容を記載したプロンプトのラリーをひたすら続けました。
セルの結合でエラーが出ては、ソースを直しを繰り返し。ソースでは無理だと思い、エクセルの結合解除など試行錯誤を繰り返しましたがうまくいかない。
行き詰った中最初のプロンプトを再度修正して入力。
__追加のプロンプト__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/f997be8f-b99a-4189-34fd-6d161c21a3a9.png)
さんざんデバックを繰り返したのがウソのように何とかマクロが稼働し、今までの苦労が信じられないようにどう差し出しました。結果確認用に入力したセルがまとめ先にペーストされている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/858e7904-a05b-8333-3909-614b5507dbe7.png)
最終形は非常にシンプルなコードに戻っていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/0704d014-833c-d130-fa76-368d73247516.png)

# まとめ
今回のチャレンジではなかなか思ったようにいかずとても苦労しました。
ChatGPTでコードがかけなくても代わりに書いてくれるということで、VBAコードを生成してもらいながら進めましたが、元の準備や下調べが足りなかったことから反省点も多くあります。
結果として形にはなりませんでしたが、ExcelのPowerQueryの機能や今回非常に苦労したマクロで何かを作成するということの一端に触れられ、反省も多いですが、新しいことにチャレンジできた自分をほめたい気持ちもあります。
普段の業務で使うファイルは、社外秘の塊なので仮のファイルでマクロを組んでみましたが、早速職場に戻ったら実際に使っているファイルにマクロ組みこんで動かしてみようと思います。
チームのみんなが何とかしようとしている商品原稿の原稿整理をこれで楽にできたらと思います。

うまく動かしてみんなにどや顔するシーンを想像しながら今日は寝ようと思います。

乱文に最後までお付き合いいただきありがとうございました。
それでは次の記事でお会いできることを楽しみしにしております。それではまたお会いしましょう。
![message_goseichou_man (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846957/1b738f00-4c4d-a8ee-ee64-2509ca7c6227.png)