MENU

Fun & Interesting

【Excel】VBAでChatGPT(GPT-API)と連携する方法を割と詳しく解説

Video Not Working? Fix It Now

VBAを使ってExcelをChatGPT風にする方法と、そのメリットについて解説します。 Copilotが来たらこんなもん不要になるのかもしれませんが、おそらくバージョンの互換性や使用料金の問題でまだまだ浸透に時間はかかると思うので。 ※動画で触れてませんでしたが、チャットモードやプラグインと連携したい場合は大人しくpythonを使うのがいいと思います。 【動画内で紹介したExcel】 https://drive.google.com/file/d/1s8I8Hxm7eAmW7QSpLCi4RIK9Vvfv-kQf/ 【目次】 0:00 冒頭 解説編 1:10 ExcelでChatGPT(GPT-API)が使えるメリット 3:49 注意点 実践編 4:56 Excel立ち上げ→マクロの登録 6:28 APIキーを入力するセルを設定 7:56 プロンプト、パラメータなどのセルを設定 10:23 マクロの登録+実行方法! 12:14 困った時は 【コード】 Option Explicit Const API_URL As String = "https://api.openai.com/v1/chat/completions" Sub ApplyAddressCorrection() Dim apiKey As String Dim temperature As Double Dim text As String Dim response As String Dim responseArray() As String Dim ws As Worksheet Dim i As Long Set ws = ActiveSheet ws.Range("B5").CurrentRegion.ClearContents apiKey = Range("API").Value temperature = ws.Range("D3").Value text = ws.Range("B2").Value & ws.Range("B3").Value text = "{""model"": ""gpt-3.5-turbo"", ""temperature"": " & temperature & ", ""max_tokens"": 2000" & ", ""messages"": [{""role"": ""user"", ""content"": """ & text & """}]}" response = sendAPIRequest(API_URL, text, apiKey) ws.Range("B5").Value = extractContent(response) response = extractContent(response) response = Replace(response, "\n", vbLf) If ws.Range("D5").Value = "する" Then response = Replace(response, "。", "。" & vbLf) responseArray = Split(response, vbLf) For i = 0 To UBound(responseArray) ws.Range("B" & 5 + i).Value = responseArray(i) Next i End Sub Function sendAPIRequest(url As String, text As String, apiKey As String) As String Dim request As Object Set request = CreateObject("MSXML2.XMLHTTP") request.Open "POST", url, False request.setRequestHeader "Content-Type", "application/json" request.setRequestHeader "Authorization", "Bearer " & apiKey request.send text sendAPIRequest = request.responseText End Function Function extractContent(response As String) As String Dim startPos As Integer Dim endPos As Integer startPos = InStr(1, response, """content"": """) + 12 'VBAでjsonの扱いが困難のため特定の文字列をキーとしている endPos = InStr(startPos, response, """") extractContent = Mid(response, startPos, endPos - startPos) End Function 【関連】 VBAの超基礎的なところを知りたい方はこちら↓ 【初心者向け】バルスで学ぶVBAの基礎 https://youtu.be/MoeeGu4VIgA プロンプトって何?temperatureって何?って方はこちら↓ 【大注目スキル】「プロンプトエンジニアリング」の基礎について、"Prompt Engineering Guide"に沿って少し真面目に解説します。 https://youtu.be/6DCig_l9UA0 【ChatGPT-Plus】 https://openai.com/blog/chatgpt-plus/ 【ChatGPT】 https://openai.com/blog/chatgpt/ <Twitter> わちょん https://twitter.com/wachi_yukkuri <チャンネル紹介> ExcelやVBA中心。時には真剣に、時には楽しく【ゆっくり動画】を作っています https://www.youtube.com/channel/UCc1sntWEyGXMhH0fXI5mMiQ/ <動画編集ソフト> ゆっくりMovieMaker4 https://manjubox.net/ymm4/ <音楽・効果音> 甘茶の音楽工房 さん https://amachamusic.chagasi.com/terms.html 効果音ラボ さん https://soundeffect-lab.info/sound/anime/ <おすすめの本> カリスマYouTuberが教えるExcel超時短メソッド Amazon: https://px.a8.net/svt/ejp?a8mat=3NCUSQ+AVR8TU+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0B3CP8721%2F%3Ftag%3Da8-affi-315072-22 楽天: https://rpx.a8.net/svt/ejp?a8mat=2NQJOJ+3NKTGY+2HOM+BWGDT&rakuten=y&a8ejpredirect=https%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhgc%2Fg00q0724.2bo11c45.g00q0724.2bo12179%2Fa16080209978_2NQJOJ_3NKTGY_2HOM_BWGDT%3Fpc%3Dhttps%253A%252F%252Fitem.rakuten.co.jp%252Fbook%252F17163337%252F%26m%3Dhttp%253A%252F%252Fm.rakuten.co.jp%252Fbook%252Fi%252F20676681%252F <しっかり勉強したい方向け> 侍テラコヤ(プログラミング言語全般を体系的に学びたい人向け) http://msm.to/6kyRIg3 クーポン→WACHI30 #Excel #chatGPT

Comment