找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1044|回复: 8

[分享] 关于WPS中的VBA嵌入deepseek的代码问题

[复制链接]
miosinwei 发表于 2025-2-10 14:28:32 | 显示全部楼层 |阅读模式

注册后推荐绑定QQ,之后方才可以使用下方的“用QQ帐号登录”。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何将这串代码转换成VBA语言,从而代入到WPS中运行?
1.jpg
2.jpg
epiman 发表于 2025-2-10 18:03:44 | 显示全部楼层
这个很简单啊,既然都申请 api 了,肯定在 deepseek 有账号啊直接问 deepseek 即可,以下是 deepseek的回复:
) h! [% G1 w& ], [* i* o
) V9 Z2 w1 g3 U* S2 R) O1 M要在 WPS 中接入 DeepSeek 的 API,您可以按照以下步骤操作:9 \$ c1 V: _* c& @( Z

, H/ J7 B6 k/ D: b$ F. a### 1. 获取 API 密钥
' E8 B# s1 v7 ~# I5 V1 |首先,您需要在 DeepSeek 官网注册账号并获取 API 密钥。
9 j6 h7 H* `" x, _. n
9 E: H. ?  F2 |. @3 C! _### 2. 安装 WPS Office( Q" U5 `; i( q6 t( g3 p3 s- K
确保已安装 WPS Office,并具备 VBA(Visual Basic for Applications)支持。
& M- V( L8 Q4 w. \: k$ W' |+ V. d' p+ Z# D
### 3. 打开 VBA 编辑器! G& |+ [8 @9 `3 y- I3 X* K
在 WPS 中,按 `Alt + F11` 打开 VBA 编辑器。6 w  o, O( I9 I4 f3 f/ s
* Y* p: k. h: Z; i7 w: D
### 4. 创建新模块: o( T' z. _, E
在 VBA 编辑器中,选择 `Insert > Module` 创建一个新模块。* G0 T9 Y' T1 o2 ^0 O6 L
! e, i( M- A9 s$ j+ z
### 5. 编写 VBA 代码& ^: ]3 t5 d9 @
在新模块中编写代码,调用 DeepSeek 的 API。以下是一个示例代码:+ S9 `$ N4 ]  H4 L. _  T) U
; j6 U- w5 H% \
  1. ```vba
    0 Z( J9 x8 t4 S/ v) e7 q
  2. Sub CallDeepSeekAPI()
    4 z7 |5 w7 t4 e9 ~5 }5 u
  3.     Dim http As Object
    ; Q8 G& ]/ u* k, O) j4 k
  4.     Dim url As String( f$ g% n& l' A! Q
  5.     Dim apiKey As String! V2 [5 B0 o5 [
  6.     Dim requestBody As String
    , [6 A* M5 H& J0 f/ T  Z* C
  7.     Dim response As String3 o% E5 @- ]3 S4 k  ]
  8.     2 ?, Z- k! a# f8 b( }7 }: D" N) P
  9.     ' 设置 API 地址和密钥6 O+ V% [. K- p( U
  10.     url = "https://api.deepseek.com/v1/your_endpoint"
    , _8 b# k; P, y/ U2 t
  11.     apiKey = "your_api_key_here"% Z# \9 z0 s% M% s) g* z# j
  12.     3 [2 \+ D8 @( @% ^2 Z1 D3 V/ j
  13.     ' 创建 HTTP 请求对象
    ) ^, p! M+ x% _; A
  14.     Set http = CreateObject("MSXML2.XMLHTTP")
    1 v6 X% @) o2 k( r+ m" D
  15.     ' j* D7 _4 s5 ]
  16.     ' 设置请求参数
    4 H; M# d2 j2 ~1 I+ `9 V. ~2 |9 w
  17.     requestBody = "{""key1"":""value1"",""key2"":""value2""}"1 v0 ?4 y) D* u) W9 ?
  18.    
    $ i# n# M  S3 k$ i7 N
  19.     ' 发送请求. C8 C/ z2 y% X( ?
  20.     http.Open "POST", url, False; i$ q8 C+ F* H
  21.     http.setRequestHeader "Content-Type", "application/json"2 Y* W: M& j, |' F' X% {
  22.     http.setRequestHeader "Authorization", "Bearer " & apiKey
    # y5 k( c. ^5 V5 U% ]; A' i4 r% `
  23.     http.send requestBody
    - N+ n( b5 _- k& n- L
  24.    
    4 x6 h+ D8 U; p
  25.     ' 获取响应
    8 k# k3 t% y  V5 ~2 A
  26.     response = http.responseText- I& z! r% w. T$ r
  27.     % `) D; c* @! H* }& I
  28.     ' 输出响应2 N  E, P' H. x# B3 q; n+ |3 G" R
  29.     MsgBox response
    ; `) O1 Q: ]  u  o9 f
  30. End Sub- e) L% c4 F; }
  31. ```
复制代码

. p4 f1 n( X! z0 D# Y" A! N7 Z8 L5 B  S! F; \4 Z
### 6. 运行代码+ r% z) h/ c2 c8 f2 Z
按 `F5` 运行代码,调用 DeepSeek API 并显示响应。3 L+ g2 G& a2 Z4 A
. V. D% ]/ @- H6 ^) w
### 7. 处理响应
, W( O0 Q2 j6 P1 O* x+ E根据 API 返回的数据,您可以在 WPS 中进行进一步处理,如将数据写入单元格或生成报告。
8 y) ]# f" t+ [- [' ~. N: l1 H5 _4 ?) J. j
### 注意事项
* w- ]. E- s+ ~/ Q- ]& }, \- 确保 API 地址和密钥正确。- M) \( D  M$ P3 i/ l. Z
- 根据 API 文档调整请求参数和数据处理逻辑。) T4 r% `0 q/ |* t" ?, w/ ?4 W4 D% G
- 如果 API 需要其他认证方式,请相应调整代码。1 C5 z4 C1 z) E9 V! @" @, ^: C) B
9 W0 {2 L0 ]) K5 G" W0 J! n+ o
通过这些步骤,您可以在 WPS 中成功接入 DeepSeek 的 API。
回复

使用道具 举报

epiman 发表于 2025-2-10 18:08:42 | 显示全部楼层
你可以讲图 2 的代码喂给 deepseek,问它这是 curl 调用 deepseek 的 api 的代码, 在 WPS 里怎么来实现?
回复

使用道具 举报

PH_Pr 发表于 2025-2-12 08:51:42 | 显示全部楼层
本帖最后由 电子葵花 于 2025-2-12 09:09 编辑
% g) c  R; R: @! D+ Q5 E# Z( b3 c0 y
总掉线不太好用。
, x3 T% l- F# U2 a" [) P- W9 Q 1.png 4 l% `  h# [, M

! S8 g7 p& ?, ~9 q' Q/ @) O
  1. async function deepSeek(){  - L1 ^7 K! f: y) m. S  [% j& E
  2.         const isKeepThink = InputBox("回答结果是否保留DeepSeek的思考过程?", "温馨提示:","否");
    ( [3 X5 x( F. A
  3.     let originalSelection = Selection.Range.Duplicate;  // 保存原始选中的文本          ) |& l2 m5 ]. J+ w
  4.     let inputText = Selection.Text.replace(/\s/g,"");//替换非法字符, y! M3 }6 Z% \6 Z* W; K' E
  5.     if(!(inputText && inputText.length > 1)) return alert("请选中文字!");& Z& n5 z7 F" {  i. O
  6.     alert("在没有出现任务完成窗口之前,请耐心等待..............\n\n请点击确定!");8 z' r0 A: A/ f% e0 b3 k; y) i
  7.     let pro = await fetch("http://localhost:11434/api/chat", {* a2 r6 S# m$ |; S
  8.             "headers" : {* q1 t- D4 @3 G# i9 R' J: s
  9.                     "content-type" : "application/json; charset = UTF-8",' L  I6 E$ G% {  ~8 S0 v% c% |
  10.                     "authorization": "Bearer " + "apikey"
    ; |* T/ o- m* d1 ^! {1 H/ D4 D- l
  11.             },; i, Q+ X0 W: S
  12.             "body":`{"model": "deepseek-r1:1.5b", "messages": [{"role":"user", "content":"${inputText}"}], "stream": false}`,7 W3 y# Y. C2 R' n$ [
  13.             "method" : "POST"
    ( E6 @- \8 q0 k2 q" z3 R1 |% B, k
  14.     }).then(response => {
    / W% u5 `* `4 F& p( l) s  W- `
  15.                 if (!response.ok) throw new Error('与大模型通讯出现错误');
    . n+ `# K; p6 i+ E) Q' A; O
  16.                 return response.json(); * d! |; ?5 Y7 n
  17.         }).catch(error => alert("出现错误\n" + error));6 P- e+ a  d+ Q5 z0 G8 u) b) T( w- ]
  18.     let response = isKeepThink == "否" ? keepThink(pro.message.content) : pro.message.content;/ K* a# i+ g( l% ]
  19.         Selection.Collapse(wdCollapseEnd)// 取消选中原始文本
    0 D! N! ~/ Q1 m2 r: V9 p/ s
  20.         Selection.TypeParagraph() // 插入新行6 `: a7 e9 q. d5 R) a9 ?, F
  21.         Selection.TypeText(response)// 将内容插入到选中文字的下一行        ) u$ b+ \7 m* c+ F# h
  22.         originalSelection.Select()// 将光标移回原来选中文本的末尾
    % V$ ^, l% Z  _
  23.         alert("任务完成!")
    ! L2 t' e2 l- s  e2 a
  24. }
    : r# M& W2 q! l8 w0 j
  25. : L) `6 [' f0 i* ^9 [0 V2 I5 F
  26. function Callback(control){
    ! [, b+ p) g; ?1 M9 K6 y2 W
  27.         deepSeek()
    ! S; A2 b) N$ S8 [/ x
  28. }) V+ O  o8 S; X. A4 W$ s  z( N* O
  29. 8 S- s& v4 w+ j. y. a1 J& e
  30. function keepThink(str){
    4 ]1 J1 H, n: U: J. k. ~
  31.         const index = str.indexOf(`</think>`);0 N& E: {6 U' v# W/ x4 T
  32.         return index == -1 ? str : str.slice(index + 10);
    ! f2 z% r/ W" P+ _
  33. }
复制代码

3 r, [: L8 _, B' x1 v' {, p. U) v0 a0 B; k2 t5 r% K9 O

, \( `3 T; m1 M1 o前提是先安装好ollama,并拉取好模型,假设密下载的是deepseek r1 1.5b。然后运行-cmd,输入命令:ollama run deepseek - r1:1.5b ,之后等待出现send message出现,再打开附件,按图操作即可。

JSA本地调用DeepSeek.rar

11.89 KB, 下载次数: 3

评分

参与人数 1钢镚 +20 收起 理由
epiman + 20 热心回复坛友问题:-)

查看全部评分

回复

使用道具 举报

 楼主| miosinwei 发表于 2025-2-17 09:02:35 | 显示全部楼层
本帖最后由 miosinwei 于 2025-2-17 09:04 编辑 ' U+ i2 R" p% ~8 Y& q
epiman 发表于 2025-2-10 18:03
" k7 Z3 x8 g% i( ?& i& t这个很简单啊,既然都申请 api 了,肯定在 deepseek 有账号啊直接问 deepseek 即可,以下是 deepseek的回复 ...
5 q9 m/ y+ w, l1 M- {+ H
6 s6 Q* |' {+ o3 ^7 Y8 f
老大,已经尝试过了,总掉线不太好用
回复

使用道具 举报

 楼主| miosinwei 发表于 2025-2-17 09:04:12 | 显示全部楼层
电子葵花 发表于 2025-2-12 08:51! C" w8 d% `2 b/ M6 n, _
总掉线不太好用。
6 o0 S/ P6 \' M$ |# [* s
总掉线不太好用" M4 f+ v! S4 U  x
确实是这样,DEEPSEEK的API停止收费了
回复

使用道具 举报

epiman 发表于 2025-2-17 13:12:31 | 显示全部楼层
miosinwei 发表于 2025-2-17 09:02% ]/ s* U% k& E' v& s9 f9 c* \, K
老大,已经尝试过了,总掉线不太好用
* e2 o, m2 t! Q- [; ^# F
用第三方部署的API,腾讯、阿里、百度、字节好像都有。或者用硅基流动,我用的硅基流动,除了全规格的deepseek,还有蒸馏的32b和14b,及免费的7b和8b,见链接
$ ?, T; f  \0 C9 W7 `2 p/ P% l2 Zhttps://www.epiman.cn/home/index.html
回复

使用道具 举报

 楼主| miosinwei 发表于 2025-2-19 08:45:08 | 显示全部楼层
epiman 发表于 2025-2-17 13:125 c- r6 y) Z& c3 N! M3 o
用第三方部署的API,腾讯、阿里、百度、字节好像都有。或者用硅基流动,我用的硅基流动,除了全规格的dee ...

! ]' D8 r5 h! c9 ~硅基流动注册了,送了14个小时,而且回复很慢
回复

使用道具 举报

epiman 发表于 2025-2-19 09:38:17 | 显示全部楼层
miosinwei 发表于 2025-2-19 08:45
+ L% O5 r0 A* a  g硅基流动注册了,送了14个小时,而且回复很慢
; Z  @4 Z0 U1 o8 k, D0 Z! j8 h- Q& q. C
这个很快3 y% n+ `9 G, O0 u" j0 d
https://www.wenxiaobai.com/chat/200006
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

今日推荐上一条 /2 下一条

×
重塑学科基石

欢迎有闲之士完善公卫百科

值得:你的点滴投入,大家长期受益

回报:VIP会员特权,大额钢镚奖励

改名|钢镚|会员|联系我们|公卫人 ( 沪ICP备06060850号-3|沪公网安备31010402334125号 )

GMT+8, 2026-3-4 04:04 , Processed in 0.070325 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表