ExcelにローカルLLMの回答を出力したいときはないでしょうか。
けど、そんな中で悩むことは、
・高性能なローカルLLMで安全、無料でテキスト生成をしたいが方法がわからない
ですよね。
今回はそんなお悩みを解決する
・Excelで完全オフラインのDeepSeekからの回答を出力する方法
についてまとめます!
もくじ
ExcelにローカルLLMの回答を出力するイメージ
ExcelにローカルLLMの回答を出力するイメージについて説明をします。
まず、Excelを用意します。
B1セルに質問内容B2セルにLLMのモデル名を入れ、マクロを実行すると、
ローカルLLMが呼び出され、その結果をB4セル以降に出力していきます。
今回は国産ローカルLLMのELYZA LLM と、より高性能でサーバーエージェントさんが日本語を追加学習させたDeepSeekを使って検証したいと思います。
それでは早速実装して、使ってみましょう。
ローカルLLMのモデルについて
ローカルLLM(Large Language Model)とは、クラウドサービスを使わずに自分のPCやサーバーで動作するAIモデルのことです。
通常のAI(ChatGPTやClaudeなど)はインターネットを通じてAPI経由で利用しますが、
ローカルLLMは完全無料、オフラインで利用可能で、お財布にやさしくプライバシーが守られるのが大きなメリットです。
たとえば企業の機密情報を扱うときや、金融機関などインターネットが禁止されている完全オフライン環境で生成AIを使いたいときによいでしょう。

機能や情報を追加してオリジナルのコパイロットを作ってもよいでしょう。
なおGPU積んでいてかつメモリ大きめのパソコンが必要ですのでその点ご了承くださいませ。
ローカルLLMを動かす手順について
ローカルLLMを動作させるには、十分なスペックのPCと、専用のツール(LM Studio)が必要です。
ここでは、必要なスペックやLM Studioの導入手順を説明します。
💻 必要なPCスペック
ローカルLLMを快適に動作させるためには、以下のスペックが推奨されます。
項目 | 推奨スペック |
---|---|
CPU | Intel Core i7 / Ryzen 7 以上(マルチスレッド対応が望ましい) |
GPU | NVIDIA RTX 3060(12GB VRAM)以上(CUDA対応必須) |
メモリ | 16GB以上(推奨 32GB) |
ストレージ | SSD 512GB以上(モデルサイズが大きいため) |
OS | Windows 10/11、または Linux(Ubuntu 20.04+) |
✅ GPUは必須?
CPUでも動作は可能ですが、非常に処理が遅くなるため、NVIDIA製のGPU(VRAM 12GB以上)の搭載を推奨します。
例えば、タカヒロの環境では、
- CPU: Intel Core i7
- メモリ: 32GB
- ストレージ: 1.5TB
- GPU: ラップトップ版 RTX 3060(6GB VRAM)
という構成になっています。
このスペックでも動作は可能ですが、
より快適な環境を求める場合は高性能なGPUを搭載したPCを選ぶのが理想的です。
おすすめのPC選び
- スペックが良いほど最適で長期間快適に使えるため、可能な限り上位モデルを選ぶのがベストです。
- 特にRTXシリーズのGPUは必須レベルで、VRAM 12GB以上のモデルが望ましいです。
- これらの条件を満たすPCは、一般的なビジネス向けノートPCではほぼ見つからず、ゲーミングPCのカテゴリで探す必要があります。
以下、AmazonのおすすめゲーミングPCリストをご紹介しますので、
気になる方はチェックしてみてください。
・amazon RTX ノートパソコンで検索
・amazon ゲーミングPCで検索
※商品プロモーションを含みます。
ローカルLLM ELYZA について
次に、今回使うローカルLLM ELYZA について説明します。
📌 特徴
- 日本の企業「ELYZA」が開発した、日本語に特化したLLM
- 商用利用も可能で、企業や個人がローカルで活用できる
- llama-3-elyza-jp-8b という8B(80億パラメータ)のモデルが有名
- 文章の要約、翻訳、QA(質問応答)などのタスクに強い
- 軽量かつ効率的で、ローカル環境でも動作可能
🚀 強み
✅ 日本語特化のLLMなので、日本語の精度が高い
✅ オープンソースで利用できる(無料で試せる)
✅ 商用利用が可能なので、企業システムにも組み込みやすい
🔗 公式情報
- GitHub: https://github.com/elyza-inc
DeepSeek(DeepSeek V2)
今回使うローカルLLM DeepSeekについて説明します。
📌 特徴
- 中国のDeepSeek社が開発したLLM
- 日本のサーバーエージェント社が日本語追加学習(ファインチューニング)を実施
- DeepSeek V2 は 130億(13B)パラメータの高性能モデル
- 多言語対応だが、日本語の精度も高くなってきている
- 高速かつ高性能なモデルで、計算効率が良い
🚀 強み
✅ ELYZAよりも大規模で高性能(13Bパラメータ)
✅ 日本語の追加学習(ファインチューニング)済みで、日本語対応が向上
✅ PythonやVBAなどのコード生成タスクにも強い
🔗 公式情報
- DeepSeek: https://github.com/deepseek-ai
ELYZA LLM と DeepSeekの比較
項目 | ELYZA LLM (8B) | DeepSeek (13B) |
---|---|---|
開発元 | 日本(ELYZA) | 中国(DeepSeek) |
パラメータ数 | 8B(80億) | 13B(130億) |
日本語特化 | ✅ 特化 | ◯(追加学習あり) |
商用利用 | ✅ 可能 | ✅ 可能 |
性能 | 高速・軽量 | 高性能・高精度 |
用途 | QA, 要約, 翻訳など | コード生成, AIエージェントなど |
動作環境 | 比較的軽量 | GPUが必要(高性能) |
普段使いはELYZAのほうが軽量でさくさくなのでよいでしょう。
DeepSeekは外漏れするのでは?という不安があるかと思いますが、ご安心ください。
サイバーエージェントさんが追加学習したものですし、オフラインで動作しますので外漏れなしです。
🛠️ ローカルLLMの導入手順
LM Studioを使う
「LM Studio」は、ローカルLLMを簡単に動作させるためのGUIアプリです。
特に難しい設定なしで、ELYZAやDeepSeekなどのLLMを動かすことができます。
① LM Studioをダウンロード
公式サイト
https://lmstudio.ai/
Windows版をダウンロードします。
② LM Studio をインストール
ダウンロードした .exe
ファイルを開き、指示に従ってインストールします。
③ モデル(ELYZA LLMやDeepSeek)をダウンロード
LM Studioを開きます。
「マイモデル」 タブを開きます。
「llama-3-elyza-jp-8b」または「cyberagent-DeepSeek-R1」を検索します。
「Download」ボタンをクリックし、モデルをダウンロードします。
④ モデルを起動
「開発者」タブ を開きます。
ダウンロードしたモデルを選択します。
サーバステータスをONにします。
これによりAPIサーバが有効になり、http経由のやり取りが可能になります。

API Usageに「http://127.0.0.1:1234」 などと表示されたら成功です!
「マイモデル」 タブを開きます。
ロードしたモデルはデフォルトではGPUオフになっていますので、各モデルの歯車アイコンから設定メニューへ移動し、
GPUオフロードの数をふやしてオンにしましょう。
GPUをオンにするとGPUメモリでおさまった8B以下のモデルは爆速になりました。
⑤ API経由で利用する(VBAと連携)
http://127.0.0.1:1234/v1/chat/completions にアクセスできることを確認します。
これでVBAやPythonからこのAPIを使って問い合わせが可能になります。
ExcelにローカルLLMの回答を出力する方法
ローカルLLM連携元のExcelファイルを用意
まずは、ローカルLLMの連携元となるExcelファイルを用意しましょう。
B1セルに質問内容を入れる枠を用意します。
ローカルLLMの結果はB3セル以降に出力していきます。

ローカルLLM APIと連携するサンプルVBAコード
ローカルLLM APIと連携するVBAコードは以下の通りです。
Sub 質問をローカルLLMへ送る()
' JSONパーサーを導入しMicrosoft Scripting Runtimeを参照に追加する必要があります
Dim objhttp As Object
Dim strTextToPredict As String
Dim strRequestBody As String
Dim strResponse As String
Dim strModel As String
Dim strMessages As String
Dim apiUrl As String
Dim jsonResponse As Object
' モデル名
strModel = Sheets(1).Range("B2").Value
' 入力セルからテキストを取得し、改行を処理
strTextToPredict = Replace(Sheets(1).Range("B1").Text, Chr(10), "\n")
' JSON配列メッセージを準備
strMessages = "[{""role"": ""user"", ""content"":""" & strTextToPredict & """}]"
' APIのURLを設定(ローカル LLM)
apiUrl = "http://127.0.0.1:1234/v1/chat/completions"
' HTTPリクエストオブジェクトを初期化
Set objhttp = CreateObject("MSXML2.XMLHTTP")
With objhttp
.Open "POST", apiUrl, False
.setRequestHeader "Content-Type", "application/json"
' リクエスト本文を作成
strRequestBody = "{""model"":""" & strModel & """, ""messages"":" & strMessages & "," _
& """temperature"": 0.7, ""max_tokens"": -1, ""stream"": false}"
.Send strRequestBody
' レスポンスが成功したかどうかを確認
If .Status = 200 Then
strResponse = .responseText
Else
MsgBox "エラー: " & .Status & " - " & .statusText
Exit Sub
End If
End With
Debug.Print strResponse
' JSONレスポンスをパース
Set jsonResponse = JsonConverter.ParseJson(strResponse)
' レスポンスに含まれる配列からメッセージ部分を出力
If jsonResponse("choices")(1)("message")("role") = "assistant" Then
Sheets(1).Range("B4").Value = jsonResponse("choices")(1)("message")("content")
End If
End Sub
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
JSONパース用のライブラリの実装
VBAでJsonConverterを使用するには、VBA-JSONというライブラリをインストールする必要があり、
以下の手順で実装していきます。

GitHubからVBA-JSONをダウンロード
VBA-JSONのGitHubリポジトリにアクセスします。
「Code」ボタンをクリックし、「Download ZIP」を選択して、プロジェクトをダウンロードします。
ダウンロードしたZIPファイルを解凍
ダウンロードしたZIPファイルを解凍し、中のファイルを確認します。
JsonConverterをインポート
Excelを開き、VBAエディタ(Alt + F11)を開きます。
プロジェクトエクスプローラーで、VBAプロジェクトを選択します。
「ファイル」メニューから「ファイルのインポート」を選択し、
解凍したフォルダから「JsonConverter.bas」ファイルを選択してインポートします。
インポートされると、JsonConverterオブジェクトがリスト一覧に表示されます。
参照設定を追加
VBAエディタの「ツール」メニューから「参照設定…」を選択します。
「参照可能なライブラリ」リストで、「Microsoft Scripting Runtime」を探し、チェックボックスをオンにして「OK」ボタンをクリックします。
これでVBAプロジェクトでJsonConverterを使用することができます!
ボタンを配置する
マクロをボタンから実行できるようにしていきましょう。
まずはリボンメニューの「開発」タブを選択し「挿入」>「フォームコントロール」>「ボタン」をクリックしボタンを配置します。

任意の名前に表示名を変更し、右クリック>「マクロの登録」から上記サンプルコードのマクロ名を指定します。
VBAからローカルLLMを実行する
llama-3-elyza-jp-8bモデルを使用し文章を要約する
今回使うモデルは以下です。
cyberagent-deepseek-r1-distill-qwen-14b-japanese |
llama-3-elyza-jp-8b |
まずは、llama-3-elyza-jp-8bモデルを使用し文章を要約してみます。
質問内容と、モデル名をセルに入力します。
ボタンを押してローカルLLMを実行してみましょう。
はい、しっかり日本語の要約ができていますね!
国産だけあって意味が通る自然な日本語の文章になりました!!
なお、8Bと軽量なため、実行速度は3秒ほどで、速度は速い部類かと思います。
cyberagent-deepseek-r1-distill-qwen-14b-japaneseモデルを使用し文章を要約する
次に、cyberagent-deepseek-r1-distill-qwen-14b-japaneseモデルを使用しより高精度な文章になるか検証をしてみましょう。
モデル名をcyberagent-deepseek-r1-distill-qwen-14b-japaneseへ変更します。

ボタンを押してローカルLLMを実行してみましょう。
はい、しっかり要約ができていますね!
さらに推論をし自己解釈した上で回答しているのがわかります!!すごい!
ただし、処理時間はけっこうかかりました。
1~2分ほど待った感じです。
GPUはずすと少し早くなったちょっと謎な現象もありました。
もうすこしいろいろいじってチューニングしてみます。
ローカルLLM APIと連携するVBAコードの説明
ローカルLLM APIと連携するVBAコードについて説明をします。
モデルを指定します。
strModel = Sheets(1).Range("B2").Value
ローカルLLMへの質問内容を取得しさらに改行コードを変換します。
strTextToPredict = Replace(Sheets(1).Range("B1").Text, Chr(10), "\n")
LMStudioのAPIのURLを設定します。
apiUrl = "http://127.0.0.1:1234/v1/chat/completions"
HTTPリクエストオブジェクトを初期化します。
Set objhttp = CreateObject("MSXML2.XMLHTTP")
リクエスト文を作成します。
strRequestBody = "{""model"":""" & strModel & """, ""messages"":" & strMessages & "," _
& """temperature"": 0.7, ""max_tokens"": -1, ""stream"": false}"
リクエストを送信します。
.send strRequestBody
レスポンスが成功したかどうかを確認します。ステータスが200であれば成功とみなします。
If .Status = 200 Then
strResponse = .responseText
Else
MsgBox "エラー: " & .Status & " - " & .statusText
Exit Sub
End If
レスポンス情報をデバッグします。不要であれば削除してください。
Debug.Print .responseText
JSONレスポンスをパースします。
Set jsonResponse = JsonConverter.ParseJson(strResponse)
レスポンスに含まれる配列からメッセージ部分を出力するため、”assistant”である場合の条件を設定します。
If jsonResponse("choices")(1)("message")("role") = "assistant" Then
End If
回答である”assistant”の”content”の内容をセルに出力します。
Sheets(1).Range("B4").Value = jsonResponse("choices")(1)("message")("content")
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・Excelで完全オフラインのDeepSeekからの回答を出力する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す