こちらのエントリー記事で紹介したChatGPT関数、
Excelの計算方法を「手動」にして、F9キー押下などで再計算して使用するのがよいのですが、
次のように、いつの間にか結果がエラーがとなっていることがあります。
これは、ChatGPTの利用制限に達していると思われ、VBEのイミディエイトウィンドウに出力しているレスポンステキスト全文を見てみましょう。
なるほど、「1分に3回までなので、20秒ほど経ってからトライしてね」となっています。エラーとなっているセルを選択、F2キーで編集状態にしてEnterキーを押すと、選択しているセルが再計算されて再リクエストすることができるのですが、エラーとなっているセルを一つずつ再計算させるのは面倒ですよね。そこで再リクエストを自動化するマクロの登場です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Sub エラーを再リクエスト() Const Interval As Integer = 10 '再リクエストの時間間隔(秒) Dim myCell As Range, myTime As Double '使用されているセルを順に走査 For Each myCell In ActiveSheet.UsedRange.Cells 'エラーとなっていたらセルを選択して再計算 If IsError(myCell.Value) Then myCell.Select Do Until Not IsError(myCell.Value) myCell.Calculate myTime = Timer Do 'OpenAIに負荷をかけないようIntervalで指定した時間待機 If Timer - myTime > Interval Then Exit Do DoEvents Loop Loop End If Next MsgBox "再リクエストが完了しました" End Sub |
待機時間は冒頭で指定してください。
1 |
Const Interval As Integer = 10 '再リクエストの時間間隔(秒) |
エラーとなっているワークシートをアクティブにした状態で、このマクロを実行すると、エラーとなっているセルを順番に再リクエストしてくれます。待機しているループの中でDoEvents関数を入れてOSに制御を渡しているので、待っている間にExcel以外のPC作業を行うこともできます。実行した結果は次の通り。
なかなかにドラクエらしいセリフを言ってくれていますね。
もう一つマクロをご紹介します。追加や修正した質問のみリクエスト、あるいは回答がイマイチなので再度リクエストしたい、のような場合に使えます。選択しているセルのみ再リクエストを行うマクロで、連続リクエストでエラーとなった場合のみ待機することで、最短時間で処理が終了するようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub 選択セルを再リクエスト() Const Interval As Integer = 10 '再リクエストの時間間隔(秒) Dim myCell As Range, myTime As Double '選択されているセルを順に走査 For Each myCell In Selection.Cells myCell.Calculate If IsError(myCell.Value) Then Do Until Not IsError(myCell.Value) myTime = Timer Do 'OpenAIに負荷をかけないようIntervalで指定した時間待機 If Timer - myTime > Interval Then Exit Do DoEvents Loop myCell.Calculate Loop End If Next MsgBox "再リクエストが完了しました" End Sub |
もともとF9で再計算、再リクエストできるのですが、それだと全てのセルを再リクエストしてしまいますので、特定のセルだけ再リクエストしたい時は、複数セルやセル範囲を選択して、本マクロを実行、再リクエストが完了するまでトイレに行くなり他のPC作業をして待ち時間を効率的に使うのがよいと思います。
それでは良いVBAライフを。
コメント