先做个广告:如需代注册ChatGPT或充值 GPT4.0会员(plus),请添加站长微信:gptchongzhi
推荐使用GPT中文版,国内可直接访问:https://ai.gpt86.top
在这篇文章中,我们将讨论如何将 ChatGPT 集成到 MS Excel 中。ChatGPT 的受欢迎程度与日俱增。它具有从医疗保健到银行领域的各种用例。
OpenAI 发布了一个公共 API,可以轻松地将 ChatGPT 嵌入到任何 Web 应用程序或软件中。他们有一个官方的 python 包,但没有针对 MS Excel 用户的 Excel 插件。由于 Web API 可用,我们可以在 MS Excel 中使用它,也可以使用 VBA 代码。有些初学者可能不熟悉VBA,而是熟悉Excel宏。VBA 基本上是一种编程语言,用于创建 Excel 宏以自动执行重复任务。
更新(2023 年 6 月 9 日): ChatGPT 插件版本 4.0 已发布,具有与 Windows 和 macOS 操作系统兼容的单个插件。
在 Excel 中使用 ChatGPT 有很多好处。其中一些好处如下 :
洞察生成:通过将 ChatGPT 集成到 MS Excel,用户可以更轻松地生成洞察,从而使他们能够使用 Excel 识别趋势并做出明智的决策。
自动化: MS Excel 具有自动执行日常任务的高级功能。将 ChatGPT 与 Excel 结合使用将进一步提高工作效率。
轻松编辑:在 Excel 中轻松编辑 ChatGPT 的输出(响应)。
错误检测和故障排除: Excel 公式中的错误可能会令人沮丧并且调试起来非常耗时。通过集成 ChatGPT,您可以使用其功能来调试 Excel 工作表中的错误。
格式化功能:使用 Excel 中的各种格式化选项可以轻松格式化输出。
结构化输出:轻松以结构化格式记录和组织数据,从而更轻松地与团队成员共享
目录
访问 ChatGPT API 的步骤
在 Excel 中使用 ChatGPT 的 3 种方法
方法一:ChatGPT 的 Excel 插件
方法二:ChatGPT 的 Excel 宏
方法三:ChatGPT 的 Excel 函数
如何使用ChatGPT编写Excel公式
如何使用ChatGPT编写VBA代码
如何微调 ChatGPT 响应
如何调试错误
如何处理非英文字母
访问 ChatGPT API 的步骤
获取API密钥
第一步也是最重要的一步是使用此链接进行注册 - platform.openai.com。您可以通过现有的 Google 或 Microsoft 帐户轻松完成此操作。完成后,您需要获取秘密 API 密钥才能使用 API。它看起来像这样。复制您的 API 密钥以供将来参考。
sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
完成注册后,您将获得30 元的免费赠送来测试 ChatGPT API。3个月后就会过期。发布后,您将需要支付 0.12 元/1000 个代币。令牌基本上就是单词。确保不要与他人共享您的 API 密钥。否则,您将为其他人的使用付费。从成本上来说,是非常实惠的。我已经每天使用它一个多月了,在那段时间里我花费了不到6元。
在 Excel 中使用 ChatGPT 的 3 种方法
在本节中,我们将介绍在 Excel 中使用 ChatGPT 的各种方法。您可以根据您的要求决定您的首选。
方法一:ChatGPT 的 Excel 插件
您可以通过单击“下载”按钮下载 ChatGPT 的 Excel 插件。在 Microsoft Excel 中,插件称为加载项。不要感到困惑。MS Excel 中的插件和加载项本质上是相同的。
它适用于 Windows 和 Mac 操作系统
如何安装插件
当您从互联网下载加载项或宏文件时,Microsoft 会阻止它们运行并显示该文件的来源不受信任。您需要按照以下步骤才能使其正常工作。
转到下载的加载项文件所在的文件夹。
右键单击该文件并从菜单中选择“属性” 。
在“常规”选项卡底部,选中“安全”选项下的“取消阻止”复选框,然后单击“确定”。
请参阅以下步骤在 MS Excel 中安装 ChatGPT 加载项。
打开 Excel 并单击File功能区中的选项卡。
单击Options,然后Add-ins从左侧菜单中进行选择。
在Manage屏幕底部的下拉菜单中,选择Excel Add-ins并单击Go按钮。
单击该Browse按钮并找到您下载的加载项文件。
选择加载项文件并单击按钮OK。
Add-Ins您应该在对话框中看到加载项文件的名称。选中加载项名称旁边的框以将其激活。
完成上述步骤后,ChatGPTExcel 工作簿中应会显示一个名为 的新选项卡。
如何使用 ChatGPT 插件
请按照以下步骤使用适用于 MS Excel 的 ChatGPT 加载项。
打开新的或现有的 MS Excel 工作簿
在任意单元格中输入您想要询问 ChatGPT 的文本
点击ChatGPT选项卡 > AI 助手
输入您的 API 密钥并选择模型类型
选择您在步骤 2 中输入文本的单元格
将生成输出并将在几秒钟内出现。
当您希望 ChatGPT 在多个单元上运行时,可以使用该AIAssistant函数。请参阅下一节中的详细信息。
ChatGPT Excel 插件:函数
Excel插件的主要好处是它不像宏工作簿那样依赖于一个文件,并且可以在不同的工作簿和用户之间轻松共享。该插件有五个函数,您可以使用它们从 ChatGPT 获取响应
AIAssistant(text, [word_count])使用 ChatGPT 生成并提供搜索查询的输出。
- text :要搜索的文本
- word_count :可选。指定 ChatGPT 生成的输出的字数AIAssistant_Chat(text, [reset])像 ChatGPT 网站这样的 Converse 会记住之前的对话。
-文本:要搜索的文本
-重置:可选。开始/重置聊天会话。AIAssistant_FillData(rng_existingdata, rng_fill)通过在现有数据上训练 ChatGPT 来填充不完整的数据。
- rng_existingdata :训练数据的范围
- rng_fill :指定需要填充的单元格。AIAssistant_Extractor(prompt, keyword)从 ChatGPT 中提取关键数据。关键数据可以是姓名、地点、组织详细信息等。
-提示:要从中提取关键数据的文本
-关键字:关键字可以是名称、地点、组织等。AIAssistant_Explain(cell_formula, [detail])帮助您解释您不理解且需要支持的Excel公式。
- cell_formula :包含您希望 ChatGPT 向您解释的 Excel 公式的单元格。
-详细信息:可选。默认值为 TRUE。如果您想要不太详细的回复,请设置 FALSE。
要更快地键入功能,请先键入=ai,然后使用向上或向下箭头键选择所需的功能,最后按 键Tab。
让 ChatGPT 记住之前的对话
默认情况下,当我们向 OpenAI 发送 API 请求时,它不会回忆起之前的对话。它将每个 API 请求视为一次新的聊天。这意味着当它回答您当前的问题时,它不会记住您之前的问题。
为了提高ChatGPT保留先前对话的能力,我们可以使用该功能AIAssistant_Chat(text, [reset])。设置第二个参数reset来TRUE启动/重置聊天。
注意:这两个函数AIAssistant()都会AIAssistant_Chat()为您的搜索查询生成输出。然而AIAssistant_Chat(),也允许 ChatGPT 记住您之前的对话,这会增加令牌的使用并增加成本。reset当TRUE您不需要 ChatGPT 来回忆之前的对话时,建议设置该函数的第二个参数。
可能的用途AIAssistant_FillData( )
AIAssistant_FillData( )可用于多种目的。请参阅下面的一些示例。
情绪分析您可以在客户反馈数据上标记积极/消极/中性情绪。您只需要在函数的第一个参数中提供一些标签。
行业/部门分类您有公司名称并希望了解其行业/部门。
文本模式提取您拥有包含字符和数值的文本数据。通过使用此函数,您可以从文本中提取数值。
文档:要详细了解此插件以及上述功能,您可以访问此链接 - Excel插件文档
如果您对上述加载项感到满意,则无需跳转到以下在 Excel 中集成 ChatGPT 的其他方法。以下方法只是使用加载项的替代方法,但它们的稳健性较差,并且包含手动步骤。
方法二:ChatGPT 的 Excel 宏
下面的 VBA 代码使用 API 从 ChatGPT 获取响应并将其放入 Excel 中。它还清理来自 ChatGPT 的响应并将其置于结构化格式中,以便保持格式。这使用户可以轻松编辑响应,并轻松在任何其他文档或电子表格中重复使用。
该宏仅适用于 Windows 操作系统。如果您想将 ChatGPT 集成到 Mac 操作系统上的 MS Excel,请使用专为 Mac 设计的插件。
Sub chatGPT() Dim request As Object Dim response As String Dim text, API, api_key, DisplayText, error_result As String Dim status_code As Long Dim cellr As Range Dim prompt, rng As Range 'API Info API = "https://api.openai.com/v1/chat/completions"api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx" If api_key = "" Then MsgBox "Error: API key is blank!" Exit Sub End If Set prompt = Range("B3") Set cellr = prompt.Offset(1, 0) Set rng = Range(prompt.Offset(1, 0), prompt.Offset(2000, 0)) rng.Clear 'Input Text If prompt.Value = "" Then MsgBox "Error: Cell " & prompt.Address(RowAbsolute:=False, ColumnAbsolute:=False) & " is blank!" Exit Sub End If text = Replace(prompt.Value, Chr(34), Chr(39)) text = Replace(text, vbLf, " ") 'Create an HTTP request object Set request = CreateObject("MSXML2.XMLHTTP") With request .Open "POST", API, False .setRequestHeader "Content-Type", "application/json" .setRequestHeader "Authorization", "Bearer " & api_key .send "{""model"": ""gpt-3.5-turbo"", ""messages"": [{""content"":""" & text & """,""role"":""user""}]," _ & """temperature"": 1, ""top_p"": 0.7, ""max_tokens"": 2048}" status_code = .Status response = .responseText End With 'Extract content If status_code = 200 Then DisplayText = ExtractContent(response) Else DisplayText = ExtractError(response) End If 'Put response cellr.Value = DisplayText 'Split to multiple rows Call SplitTextToMultipleRows(cellr) rng.WrapText = True 'Clean up the object Set request = Nothing End Sub Sub SplitTextToMultipleRows(cell As Range) Dim splitArr() As String Dim delimiter As String delimiter = " " splitArr = Split(cell.Value, delimiter) For i = LBound(splitArr) To UBound(splitArr) x = splitArr(i) If Left(Trim(x), 1) = "=" Then x = "'" & x End If cell.Offset(i, 0).Value = Replace(x, """", Chr(34)) Next i End Sub Function ExtractContent(jsonString As String) As String Dim startPos As Long Dim endPos As Long Dim Content As String startPos = InStr(jsonString, """content"": """) + Len("""content"": """) endPos = InStr(startPos, jsonString, "},") - 2 Content = Mid(jsonString, startPos, endPos - startPos) Content = Trim(Replace(Content, """", Chr(34))) 'Fix for excel forumulas as response If Left(Trim(Content), 1) = "=" Then Content = "'" & Content End If Content = Replace(Content, vbCrLf, "") Content = Replace(Content, vbLf, "") Content = Replace(Content, vbCr, "") If Right(Content, 1) = """" Then Content = Left(Content, Len(Content) - 1) End If ExtractContent = Content End Function Function ExtractError(jsonString As String) As String Dim startPos As Long Dim endPos As Long startPos = InStr(jsonString, """message"": """) + Len("""message"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""message"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else startPos = InStr(jsonString, """code"": """) + Len("""code"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""code"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else ExtractError = "Unknown error" End If End If End Function
输入 API 密钥并提示
您需要在上面的代码中的变量api_key中输入您的 API 密钥。这与我们在上一步中获得的密钥相同。
在单元格 B3中输入您的问题(提示),然后按照以下步骤操作。
如何使用VBA代码
按Alt+F11打开 VBA 编辑器。
单击“插入”>“模块”以创建新模块。
在模块中,复制并粘贴上述 VBA 代码。
输入代码后,关闭 VBA 编辑器。
按Alt+F8或转到“开发人员”选项卡 >“宏”并选择宏chatGPT并单击“运行”按钮来运行宏。
演示输出
方法三:ChatGPT 的 Excel 函数
您还可以将 ChatGPT 作为 Excel 函数运行。将其作为函数运行的好处是您可以将其粘贴到多个单元格上。请参阅下面的动画图像如何使用该功能。
函数的语法是
AIAssistant(text, [word_count])
文本:提示。你想问的问题。
字数:可选。将生成的响应中的最大字数。
在下图所示的示例中,我们正在提取不同国家的首都。由于 ChatGPT 响应的字数通常多于所需的字数,因此我们可以限制函数第二个参数中的最大字数。
Function AIAssistant(text As String, Optional word_count As Long = 0) As String Dim request As Object Dim response As String Dim API, api_key, DisplayText, error_result As String Dim startPos, endPos, status_code As Long Dim rng As Range 'API Info API = "https://api.openai.com/v1/chat/completions"api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 'Input Text If word_count > 0 Then text = text & ". Provide response in maximum " & word_count & " words" End If text = Replace(text, Chr(34), Chr(39)) text = Replace(text, vbLf, " ") 'Send request to API Set request = CreateObject("MSXML2.XMLHTTP") With request .Open "POST", API, False .setRequestHeader "Content-Type", "application/json" .setRequestHeader "Authorization", "Bearer " & api_key .send "{""model"": ""gpt-3.5-turbo"", ""messages"": [{""content"":""" & text & """,""role"":""user""}]," _ & """temperature"": 0.7, ""top_p"": 1, ""max_tokens"": 2048}" status_code = .Status response = .responseText End With 'Parse response from API If status_code = 200 Then DisplayText = ExtractContent(response) Else DisplayText = ExtractError(response) End If If word_count > 0 And Right(DisplayText, 1) = "." Then DisplayText = Left(DisplayText, Len(DisplayText) - 1) Else DisplayText = DisplayText End If 'Return result AIAssistant = DisplayText End Function Function ExtractContent(jsonString As String) As String Dim startPos As Long Dim endPos As Long Dim Content As String startPos = InStr(jsonString, """content"": """) + Len("""content"": """) endPos = InStr(startPos, jsonString, "},") - 2 Content = Mid(jsonString, startPos, endPos - startPos) Content = Trim(Replace(Content, """", Chr(34))) 'Fix for excel forumulas as response If Left(Trim(Content), 1) = "=" Then Content = "'" & Content End If Content = Replace(Content, vbCrLf, "") Content = Replace(Content, vbLf, "") Content = Replace(Content, vbCr, "") Content = Replace(Content, " ", vbCrLf) If Right(Content, 1) = """" Then Content = Left(Content, Len(Content) - 1) End If ExtractContent = Content End Function Function ExtractError(jsonString As String) As String Dim startPos As Long Dim endPos As Long startPos = InStr(jsonString, """message"": """) + Len("""message"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""message"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else startPos = InStr(jsonString, """code"": """) + Len("""code"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""code"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else ExtractError = "Unknown error" End If End If End Function
确保输入上面以粗体突出显示的 API 密钥。
请按照上一节“如何使用 VBA 代码”中的步骤 1 至 4进行操作。完成这 4 个步骤后,=AIAssistant(B3)在任意单元格中键入内容。这里 B3 指的是放置提示(问题)的单元格。
如何使用 GPT-4
要访问 GPT-4,您可以在上面的 VBA 代码中替换gpt-3.5-turbo为。gpt-4OpenAI 团队定期更新他们的模型,他们有各种版本,但他们确保用户获得最新的模型版本gpt-4 or gpt-3.5-turbo。
如何使用ChatGPT编写Excel公式
您还可以使用上述插件或宏并要求 ChatGPT 像 Excel 导师一样工作。在 Excel 中,您可能有兴趣了解 Excel 函数、宏或其他与数据分析相关的功能。想要使用 Excel 但不太了解它的人可能会发现它确实很有帮助。它不仅节省您的时间,而且使数据分析变得更容易。请参阅下面的示例,其中我们向 ChatGPT 询问了与 Excel 相关的简单问题。
Excel 公式:如果单元格 F5 中的值小于 70,则“通过”,否则“失败”
ChatGPT 提示输入 Excel 公式
以下是一些示例,您可以使用这些示例要求 ChatGPT 为您编写 Excel 公式。
编写一个 Excel 公式来计算 B2:B10 范围内包含值“Pass”的单元格数量。
=COUNTIF(B2:B10, "Pass")
我正在做一个项目。我被要求分析股票价格。如何创建 Excel 公式来计算连续两天收盘价之间的百分比变化(假设单元格 B1 和 B2 中的价格)?
=((B2-B1)/B1)*100
我有一个数据集,其中 A 列中包含销售数字,B 列中包含相应日期。如何使用 Excel 公式计算 2022 年 10 月的总销售额?
=SUMIFS(A:A, B:B,">="&DATE(2022,10,1), B:B,"
在我的销售数据中,我想计算“产品 A”的总销售额。销售价值在 A1:A10 范围内。B2:B20 范围内的产品名称。我该如何为此编写 Excel 公式?
=SUMIF(B2:B20, "Product A", A1:A10)
我正在尝试管理我的预算,并想知道费用占我的总预算的百分比。你能帮我为此创建一个 Excel 公式吗?
=TotalExpense/TotalBudget
我有不同月份的收入数据。如何使用Excel公式计算每个月的增长率?
=((CurrentMonthRevenue-PreviousMonthRevenue)/PreviousMonthRevenue)*100
我正在处理员工数据,需要查找“销售”部门员工的平均工资。如何为 B2:B20 范围内的给定薪资和 A2:A20 范围内的部门制定 Excel 公式?
=AVERAGEIFS(B2:B20, A2:A20, "Sales")
在我的销售报告中,我需要根据每个销售人员的表现来计算他们的佣金。如何创建考虑不同销售级别的不同佣金率的 Excel 公式?
=IF(SalesLevel="Level 1", CommissionRate1, IF(SalesLevel="Level 2", CommissionRate2, IF(SalesLevel="Level 3", CommissionRate3, CommissionRateDefault)))
我有一张 Excel 表格,其中以百分比形式显示学生成绩。我需要根据这些百分比来分配字母等级。你能告诉我如何为此创建一个 Excel 公式吗?
Function AIAssistant(text As String, Optional word_count As Long = 0) As String Dim request As Object Dim response As String Dim API, api_key, DisplayText, error_result As String Dim startPos, endPos, status_code As Long Dim rng As Range 'API Info API = "https://api.openai.com/v1/chat/completions"api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 'Input Text If word_count > 0 Then text = text & ". Provide response in maximum " & word_count & " words" End If text = Replace(text, Chr(34), Chr(39)) text = Replace(text, vbLf, " ") 'Send request to API Set request = CreateObject("MSXML2.XMLHTTP") With request .Open "POST", API, False .setRequestHeader "Content-Type", "application/json" .setRequestHeader "Authorization", "Bearer " & api_key .send "{""model"": ""gpt-3.5-turbo"", ""messages"": [{""content"":""" & text & """,""role"":""user""}]," _ & """temperature"": 0.7, ""top_p"": 1, ""max_tokens"": 2048}" status_code = .Status response = .responseText End With 'Parse response from API If status_code = 200 Then DisplayText = ExtractContent(response) Else DisplayText = ExtractError(response) End If If word_count > 0 And Right(DisplayText, 1) = "." Then DisplayText = Left(DisplayText, Len(DisplayText) - 1) Else DisplayText = DisplayText End If 'Return result AIAssistant = DisplayText End Function Function ExtractContent(jsonString As String) As String Dim startPos As Long Dim endPos As Long Dim Content As String startPos = InStr(jsonString, """content"": """) + Len("""content"": """) endPos = InStr(startPos, jsonString, "},") - 2 Content = Mid(jsonString, startPos, endPos - startPos) Content = Trim(Replace(Content, """", Chr(34))) 'Fix for excel forumulas as response If Left(Trim(Content), 1) = "=" Then Content = "'" & Content End If Content = Replace(Content, vbCrLf, "") Content = Replace(Content, vbLf, "") Content = Replace(Content, vbCr, "") Content = Replace(Content, " ", vbCrLf) If Right(Content, 1) = """" Then Content = Left(Content, Len(Content) - 1) End If ExtractContent = Content End Function Function ExtractError(jsonString As String) As String Dim startPos As Long Dim endPos As Long startPos = InStr(jsonString, """message"": """) + Len("""message"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""message"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else startPos = InStr(jsonString, """code"": """) + Len("""code"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""code"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else ExtractError = "Unknown error" End If End If End Function0
如何使用ChatGPT编写VBA代码
它也适用于宏等高级 Excel 概念。它可以为您编写VBA代码。使用 ChatGPT 编写 VBA 代码从未如此简单。
sheet1用于应用过滤器并将过滤后的行粘贴到的VBA 代码sheet2
ChatGPT 提示编写 VBA 代码
以下是一些示例,您可以使用它们来请求 ChatGPT 帮助您编写 VBA 代码。
如何在 VBA 中循环访问单元格 A1 到 A10?
如何在 VBA 中创建用户定义函数来计算阶乘?
如何在 VBA 中创建消息框?
如何在VBA中对特定代码块实现错误处理?
将单元格 A1 到 A10 从一个工作表复制到另一个工作表的 VBA 代码?
如何使用 VBA 设置 Excel 中单元格 B2 至 B5 的格式以应用粗体字体和特定背景颜色?
如何在 VBA 中添加或减去特定日期的天数?
如何提示用户输入并将值存储在 VBA 中的变量中?
如何微调 ChatGPT 响应
temperature您可以在 VBA 代码中找到参数。它介于 0 和 2 之间。较高的值(例如 1.2)将生成更加随机的输出,而较低的值(例如 0.2)将更加集中。
如何调试错误
如果您收到此错误 -The model: gpt-4 does not exist这意味着您无权访问 GPT-4 API。您需要加入候补名单。您是否订阅ChatGPT Plus并不重要。订阅 ChatGPT Plus 不会自动授予对 GPT-4 API 的访问权限。
如果您收到此错误,您需要在这行代码之前Invalid procedure call or argument添加此错误以进行调试。如果消息框返回的值不是,则表明您的请求未成功发送。请求成功必须为200。请参阅下面可能出现的错误。MsgBox .Statusresponse = .responsetext200
401错误代码意味着您的 API 密钥不正确、已过期或者您无权访问特定版本的 ChatGPT 模型。
400错误代码意味着您的问题(在单元格 B3 中)包含一些无效字符,可能是换行符(多行中的字符串)。要修复换行符,请text = Replace(text, vbLf, " ")在前面添加此行Set request = CreateObject("MSXML2.XMLHTTP")
404错误代码可能是指输入型号名称时出现拼写错误,以防您输入 gpt-3.5-turbo 和 gpt-4 以外的其他内容
429错误代码表示您超出了当前配额,请检查您的计划和账单详细信息。
如果您遇到任何与 VBA 引用相关的问题,请尝试添加Microsoft XML v 3.0。我正在使用 Office 2019,其中上述代码无需它即可工作。我使用的参考如下所示。可以通过打开 VBA 编辑器然后添加引用Tools > References。
如何处理非英文字母
有时,来自 ChatGPT 的响应中的非英文字母无法正确显示。此问题与 UTF-8 编码有关。要解决此问题,您可以使用CleanMsg(ChatGPT_response)函数。请参考下面的例子。
Function AIAssistant(text As String, Optional word_count As Long = 0) As String Dim request As Object Dim response As String Dim API, api_key, DisplayText, error_result As String Dim startPos, endPos, status_code As Long Dim rng As Range 'API Info API = "https://api.openai.com/v1/chat/completions"api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 'Input Text If word_count > 0 Then text = text & ". Provide response in maximum " & word_count & " words" End If text = Replace(text, Chr(34), Chr(39)) text = Replace(text, vbLf, " ") 'Send request to API Set request = CreateObject("MSXML2.XMLHTTP") With request .Open "POST", API, False .setRequestHeader "Content-Type", "application/json" .setRequestHeader "Authorization", "Bearer " & api_key .send "{""model"": ""gpt-3.5-turbo"", ""messages"": [{""content"":""" & text & """,""role"":""user""}]," _ & """temperature"": 0.7, ""top_p"": 1, ""max_tokens"": 2048}" status_code = .Status response = .responseText End With 'Parse response from API If status_code = 200 Then DisplayText = ExtractContent(response) Else DisplayText = ExtractError(response) End If If word_count > 0 And Right(DisplayText, 1) = "." Then DisplayText = Left(DisplayText, Len(DisplayText) - 1) Else DisplayText = DisplayText End If 'Return result AIAssistant = DisplayText End Function Function ExtractContent(jsonString As String) As String Dim startPos As Long Dim endPos As Long Dim Content As String startPos = InStr(jsonString, """content"": """) + Len("""content"": """) endPos = InStr(startPos, jsonString, "},") - 2 Content = Mid(jsonString, startPos, endPos - startPos) Content = Trim(Replace(Content, """", Chr(34))) 'Fix for excel forumulas as response If Left(Trim(Content), 1) = "=" Then Content = "'" & Content End If Content = Replace(Content, vbCrLf, "") Content = Replace(Content, vbLf, "") Content = Replace(Content, vbCr, "") Content = Replace(Content, " ", vbCrLf) If Right(Content, 1) = """" Then Content = Left(Content, Len(Content) - 1) End If ExtractContent = Content End Function Function ExtractError(jsonString As String) As String Dim startPos As Long Dim endPos As Long startPos = InStr(jsonString, """message"": """) + Len("""message"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""message"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else startPos = InStr(jsonString, """code"": """) + Len("""code"": """) endPos = InStr(startPos, jsonString, """") If startPos > Len("""code"": """) And endPos > startPos Then ExtractError = Mid(jsonString, startPos, endPos - startPos) Else ExtractError = "Unknown error" End If End If End Function1