ExcelでGPT-3.5を使った強力なコンテンツ自動生成ツールを構築する方法

OpenAIのGPTモデルをExcelに組み込めば、関数の定義、データの要約、商品説明文の作成など、さまざまな用途に対応したコンテンツ生成ツールを構築できます。かつて幅広いテキスト生成タスクで活用されていた「text-davinci-003」などのGPT-3モデルは、2024年1月に廃止されました。現在は、チャット形式の対話タスクに最適化されたGPT-3.5(例:gpt-3.5-turbo)の利用が推奨されています。
このチュートリアルでは、Excelに「gpt-3.5-turbo」を統合し、ユーザーが入力したプロンプトに基づいてコンテンツを自動生成するツールの作り方を、初心者にもわかりやすく解説します。
ステップ1:OpenAIアカウントを設定してAPIキーを取得する
GPTのAPIを利用するには、まずOpenAIアカウントからAPIキーを発行する必要があります。
- アカウントをお持ちでない場合は、OpenAI公式サイトでサインアップしてください。
- すでにアカウントをお持ちの場合は、OpenAIアカウントにログインします。
- ダッシュボード(Dashboard)を開き、API Keys(APIキー)を選択して、Create new secret key(新しいシークレットキーを作成)をクリックします。
- Create new secret keyのダイアログボックスで:
- キーに名前(Name)を付け、権限(Permissions)を選択して、Create secret keyをクリックします。

- Save your keyのダイアログボックスで:
- 生成されたAPIキーをコピーし、安全な場所に保管します。APIキーは作成後に二度と表示されないため、必ずこの時点で保存してください。このキーはAPIリクエストの認証に使用します。
- Doneをクリックして完了です。

APIキーを公開したり、クライアント側のコードに含めたりすることは絶対に避けてください。第三者に悪用される恐れがあります。
ステップ2:ExcelにVBAコードを挿入する
続いて、プロンプトをGPTに送信し、応答を受け取るためのVBAコードを記述します。
- Excelの開発タブを開き、Visual Basicを選択します。
- VBAエディターで挿入→標準モジュールを選択します。
- 以下のVBAコードをモジュールに貼り付けて、UDF(ユーザー定義関数)を作成します。

VBAコード:
Private Const API_KEY As String = "Your_OpenAI_API_Key" 'ご自身のOpenAI APIキーに置き換えてください。
' OpenAI APIを呼び出す関数
Function GenerateContent(Prompt As String) As String
On Error GoTo ErrorHandler
Dim Http As Object
Dim response As String
' HTTPオブジェクトを作成
Set Http = CreateObject("MSXML2.XMLHTTP.6.0")
' リクエストヘッダーとエンドポイントを設定
Http.Open "POST", "https://api.openai.com/v1/chat/completions", False
Http.setRequestHeader "Content-Type", "application/json"
Http.setRequestHeader "Authorization", "Bearer " & API_KEY
' GPT-3.5-turbo用のJSONペイロードを準備
Dim jsonPayload As String
jsonPayload = "{\"model\": \"gpt-3.5-turbo\", \"messages\": [{\"role\": \"user\", \"content\": \"" & Prompt & "\"}], \"max_tokens\": 200}"
' リクエストを送信
Http.send jsonPayload
' レスポンスを取得
response = Http.responseText
' JSONレスポンスを解析
Dim jsonResponse As Object
Set jsonResponse = JsonConverter.ParseJson(response)
' 生成されたテキストの内容を返す
GenerateContent = jsonResponse("choices")(1)("message")("content")
Exit Function
ErrorHandler:
GenerateContent = "Error: " & Err.Description
End Function
- "Your_OpenAI_API_Key"の部分を、実際に取得したAPIキーに置き換えてください。
コードの解説:
- GenerateContent(prompt As String)関数: ユーザーのプロンプトを引数として受け取るユーザー定義関数です。
- HTTPリクエストの設定:
- HTTPオブジェクトの作成: MSXML2.XMLHTTPを使用してリクエストを送信します。
- リクエストヘッダーの設定: Content-TypeをJSONに指定し、APIキーを含むAuthorizationヘッダーを設定します。
- JSONペイロード: モデル名、ユーザーのプロンプト、最大トークン数を含むJSONオブジェクトを作成します。
- リクエスト送信: JSONペイロードとともに、HTTP POSTリクエストをOpenAI APIのエンドポイントへ送信します。
- レスポンス処理: 受け取ったレスポンスをJSONパーサー(VBA-JSON)で解析し、生成されたテキストを抽出します。
- 結果の返却: 生成されたテキストをExcelのセルに表示できる形で返します。
ステップ3:JSON解析ライブラリを導入する
ExcelはJSON解析にネイティブ対応していないため、GitHubからVBA-JSONをダウンロードし、GPTから返されるJSONレスポンスを解析できるようにします。
- GitHubからJsonConverter.basをダウンロードします。
- VBAエディターでファイルタブ→ファイルのインポートを選択します。

- インポート画面でJsonConverter.basを選択し、プロジェクトに追加します。

参照設定を有効にする:
JsonConverterライブラリは、Dictionaryオブジェクトを使ってJSONデータ構造を管理するため、「Microsoft Scripting Runtime」への参照設定が必要です。
- ツールタブ→参照設定を選択します。
- 参照可能なライブラリ ファイルの一覧でMicrosoft Scripting Runtimeにチェックを入れ、OKをクリックします。

ステップ4:スクリプトを実行してコンテンツ生成ツールを使う
- コードを保存してワークシートに戻ります。
- シート内に、GPTへの入力として使用するプロンプトを入力します。
- セルB2に以下の数式を入力します。
この数式により、セルA2に入力したプロンプトをもとにGPT-3.5-turboがコンテンツを生成し、その結果がセルB2に表示されます。
実行結果:

まとめ
以上の手順に従えば、Excel上でGPTを活用したコンテンツ生成ツールを簡単に作成できます。アイデア出しや文章の下書き、コンテンツ制作プロセスへのインテリジェントな自動化など、日々の業務を大幅に効率化できるでしょう。ただし、OpenAIのGPT APIは無料ではない点に注意が必要です。APIの利用にはトークン使用量に応じた費用が発生するため、予算オーバーを防ぐために利用状況をこまめに確認することをおすすめします。
-
Microsoft Wordで行間隔を変更する方法|ダブルスペースやカスタム設定も解説
文書を作成する際、読みやすさは非常に重要な要素です。行と行の間のスペース(行間隔)が狭すぎると文章が読みにくくなり、逆に広すぎると視線が散漫になってしまいます。新聞を読んだことがある方なら、オンライン記事と比べて新聞の行間がかなり狭いことに気づいたはずです。新聞は紙面コストの関係上、スペースの節約が不可欠ですが、オンライン閲覧ではそこまで厳しい制約はありません。この記事では、Microsoft Wordで行間隔を変更する方法を詳しく解説します。 ダブルスペースとは? 行間を広げる方法のひとつとして人気なのが「ダブルスペース」です。これは文書内の行間を一瞬で2倍に広げる設定で、簡単に言えば、各行
-
Microsoft Excelでファイルを開くと空白画面が表示される原因と対処法
Microsoft Excelは通常、安定して動作するアプリケーションですが、時折、基本的な操作すら正常に行えなくなることがあります。最近では「Excelが正しく起動できない」という不具合の報告が相次いでいます。具体的には、ファイルをダブルクリックして開こうとした際に、本来表示されるはずの内容ではなく真っ白な空白画面が表示されるという、奇妙ながらもよくある症状です。 調査によると、この問題はユーザーがファイルをダブルクリックしたときにのみ発生します。「ファイル」>「開く」>「ブック」から開けば問題なく表示されるものの、やはりダブルクリックの方が手軽であるため、面倒な操作方法に妥協し