【excel】VBA股票数据获取(搜狐股票)

文章目录

  • 一、序
  • 二、excel 自动刷新股票数据
  • 三、付费获取

一、序

我其实不会 excel 的函数和 visual basic。因为都可以用matlab和python完成。

今天用了下VBA,还挺不错的。分享下。

上传写了个matlab获取股票数据的,是雅虎财经的。这次是搜狐股票的数据。


搜狐股票:https://q.stock.sohu.com/

其实都大同小异,就是发送一个http请求,然后解析获取的数据即可。


随便找个股票:
在这里插入图片描述

点击左侧栏的“历史行情”:这里就是我们要下载的数据,我前面文章使用matlab、python都可以爬取的。

在这里插入图片描述

二、excel 自动刷新股票数据

无法就是拿VBA 发送个http请求,然后把返回的数据保存到excel相应的位置。

随便拿个api post测试一下api,返回数据如下:

			0	"2024-12-31", 日期
			1	"3.00", 开盘
			2	"2.90", 收盘
			3	"-0.13",涨跌额
			4	"-4.29%",涨跌幅
			5	"2.88", 最低
			6	"3.04", 最高
			7	"1179628", 总手
			8	"34640.35",成交金额
			9	"4.39%" 换手率

office 版本:Microsoft 365

excel 中:

  • 点击 文件 -> 选项。
  • 在左侧选择 自定义功能区,然后勾选 开发工具 选项,点击 确定。

在这里插入图片描述

插入一个按钮:按下即可执行VBA代码,刷新数据
在这里插入图片描述

要修改这个按钮的文字大小之类的,右键然后编辑文字、或者设置控件格式即可。

点一下其它地方,即可取消编辑状态,这时候鼠标左键点下即代表按下按钮。
在这里插入图片描述

自己弄一下表格样式: 把下面需要填入数据的区域的单元格格式设置为“文本”。

在这里插入图片描述

开发工具:Visual Basic 编写VBA代码
在这里插入图片描述


源码:

' 获取数据的主程序
Sub get_data()
   ' 清空工作表中的数据
   clear_cells
   ' 加载页面数据
   load_page1
   ' 选择 A1 单元格
   Range("A1").Select
End Sub


' 加载页面数据
Public Sub load_page1()
     Dim url As String, sSp() As String, aaa As String, line As String, sArray() As String
     ' 获取工作表1中的日期范围
     cd = Sheets(1).[c1]   ' 获取开始日期
     sd = Sheets(1).[e1]   ' 获取结束日期
     ed = Sheets(1).[g1]   ' 获取股票代码
     
     ' 构造 URL 地址,连接股票数据请求的 API
     url = "https://q.stock.sohu.com/hisHq?code=cn_" & cd & "&start=" & sd & "&end=" & ed
     
     ' 创建一个 HTTP 请求对象,用于发送请求并获取响应数据
     With CreateObject("msxml2.xmlhttp")
            .Open "post", url, False  ' 发送 POST 请求
            .send  ' 发送请求
     
     ' 获取响应文本并去除回车符
     aaa = Replace(.responsetext, Chr(13), "")
     
     ' 查找响应中是否包含"Not Found"字符串,若有则提示数据源无法访问
     Dim inte As Integer
     inte = InStr(aaa, "Not Found")
     If inte <> 0 Then
         MsgBox ("数据源无法访问!")  ' 弹出提示框
         Debug.Print "数据源无法访问!退出"
         Exit Sub  ' 如果数据源不可访问,退出程序
     End If
        
     ' 'Debug.Print "响应数据:" & aaa  ' 可以用来打印调试信息,取消注释来查看响应数据
     
     ' 将响应数据按 '],[' 分割,分割成单个记录
     sSp = Split(aaa, "],[")
     
     ' 如果有超过一个数据项,开始处理每一行的数据
     If UBound(sSp) > 1 Then
         For i = 0 To UBound(sSp) - 1
             line = sSp(i)  ' 取得一行数据
             
             ' 'Debug.Print "  行:" & line  ' 调试信息,打印每一行数据
             
             ' 如果是第一行数据,去掉多余的部分
             If i = 0 Then
                 line = Mid(line, 22, Len(line))
             End If
             
             ' 移除双引号
             line = Replace(line, Chr(34), "")
             
             ' 'Debug.Print "  行2:" & line  ' 打印去除双引号后的数据行
             
             ' 将行数据按逗号分割
             sArray = Split(line, ",")
             
             ' 'Debug.Print "   单元格:" & sArray(0)  ' 打印每一项数据的值
             
             ' 将分割后的数据填充到工作表中,从第3行开始
             Worksheets("sheet1").Cells((i + 3), 1) = sArray(0)
             Worksheets("sheet1").Cells((i + 3), 2) = sArray(1)
             Worksheets("sheet1").Cells((i + 3), 3) = sArray(2)
             Worksheets("sheet1").Cells((i + 3), 4) = sArray(4)
             Worksheets("sheet1").Cells((i + 3), 5) = sArray(5)
             Worksheets("sheet1").Cells((i + 3), 6) = sArray(6)
             Worksheets("sheet1").Cells((i + 3), 7) = sArray(7)
             Worksheets("sheet1").Cells((i + 3), 8) = sArray(8)
             Worksheets("sheet1").Cells((i + 3), 9) = sArray(9)
         Next i
     End If
     End With
End Sub

' 清空指定范围的单元格内容
Public Sub clear_cells()
    Range("A3").Select  ' 选择 A3 单元格
    ActiveWindow.SmallScroll Down:=45  ' 滚动页面,确保可见范围内有 A4
    Range("A3:I477").Select  ' 选择 A3 到 I477 范围
    Selection.ClearContents  ' 清空所选范围的内容
    Range("A1").Select  ' 选择 A1 单元格
End Sub


运行效果:
在这里插入图片描述

三、付费获取

我还写了升级版,可以获取多个股票数据。

不愿意自己写的就付款哈哈:链接

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/954661.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解锁企业数据管理统一身份认证难题,EasyMR助力企业敏捷提效

在数字经济迅猛发展的当下&#xff0c;企业数据量正以令人惊叹的速度持续增长。据IDC研究显示&#xff0c;至2025年&#xff0c;全球数据总量预计将超175 ZB。数据的爆发式增长对企业而言&#xff0c;既是机遇&#xff0c;更是巨大挑战。 如今&#xff0c;大数据已然成为企业决…

IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南

IntelliJ IDEA Type Hierarchy Scope Pattern 学习指南 什么是 Type Hierarchy&#xff1f; Type Hierarchy 是 IntelliJ IDEA 提供的一个工具&#xff0c;允许开发者查看某个类的继承关系及其实现的接口结构。它是理解类关系的重要工具&#xff0c;尤其在处理复杂的继承体系…

ukui-quick 计数器

作品简介 使用ukui-quick框架进行开发&#xff0c;实现了在任务栏中计数器的插件&#xff0c;方便用户的日常使用。 技术架构 用于实现一个具有点击计数功能的QML应用程序。这个架构将包括C后端和QML前端&#xff0c;通过Qt的信号和属性绑定机制进行交互。 实现过程 开发环…

Flutter:封装ActionSheet 操作菜单

演示效果图 action_sheet_util.dart import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:demo/common/index.dart;class ActionSheetUtil {/// 底部操作表/// [context] 上下文/// [title] 标题/// [items] 选项列表 …

【混合开发】CefSharp+Vue 解决Cookie问题

问题表现 使用Element-admin架构搭建Vue前端项目&#xff0c;在与CefSharp搭配时&#xff0c;出现无法使用cookie的问题。 无法将token存入cookiecookie无法被读取 如下图&#xff0c;Cookies下显示file://。 正常的Cookies显示&#xff0c;Cookies显示为http://域名&#x…

IIO(Industrial I/O)驱动介绍

文章目录 IIO&#xff08;Industrial I/O&#xff09;驱动是Linux内核中用于工业I/O设备的子系统&#xff0c;主要用于处理传感器数据采集和转换。以下是其关键点&#xff1a; 功能 数据采集&#xff1a;从传感器读取数据。数据处理&#xff1a;对原始数据进行滤波、校准等操作…

Flutter插件制作、本地/远程依赖及缓存机制深入剖析(原创-附源码)

Flutter插件在开发Flutter项目的过程中扮演着重要的角色&#xff0c;我们从 ​​​​​​https://pub.dev 上下载添加到项目中的第三方库都是以包或者插件的形式引入到代码中的&#xff0c;这些第三方工具极大的提高了开发效率。 深入的了解插件的制作、发布、工作原理和缓存机…

C#轻松实现条形码二维码生成及识别

一、前言 大家好&#xff01;我是付工。 今天给大家分享一下&#xff0c;如何基于C#来生成并识别条形码或者二维码。 二、ZXing.Net 实现二维码生成的库有很多&#xff0c;我们这里采用的是http://ZXing.Net。 ZXing是一个开放源码的&#xff0c;用Java实现的多种格式的一…

一些常见的Java面试题及其答案

Java基础 1. Java中的基本数据类型有哪些&#xff1f; 答案&#xff1a;Java中的基本数据类型包括整数类型&#xff08;byte、short、int、long&#xff09;、浮点类型&#xff08;float、double&#xff09;、字符类型&#xff08;char&#xff09;和布尔类型&#xff08;boo…

PyTorch框架——基于深度学习YOLOv5神经网络水果蔬菜检测识别系统

基于深度学习YOLOv5神经网络水果蔬菜检测识别系统&#xff0c;其能识别的水果蔬菜有15种&#xff0c;# 水果的种类 names: [黑葡萄, 绿葡萄, 樱桃, 西瓜, 龙眼, 香蕉, 芒果, 菠萝, 柚子, 草莓, 苹果, 柑橘, 火龙果, 梨子, 花生, 黄瓜, 土豆, 大蒜, 茄子, 白萝卜, 辣椒, 胡萝卜,…

用css和html制作太极图

目录 css相关参数介绍 边距 边框 伪元素选择器 太极图案例实现、 代码 效果 css相关参数介绍 边距 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}div{width: …

WPF、控件模板(ControlTemplate)和数据模板(DataTemplate)

前言 在 WPF 中&#xff0c;控件种类丰富且功能非常完善。一个显著的优点是 WPF 提供了强大的自定义能力和灵活的用户界面表现&#xff0c;能够满足各种复杂的应用需求。其中&#xff0c;ControlTemplate 和 DataTemplate 是两个非常重要的概念&#xff0c;分别用于自定义控件…

RAG实战_01代码生成_02智能检索

整理了RAG案例的Git代码 https://github.com/LGRY/RAG_Tutorial/tree/main 【注意事项】 01 代码生成系统源代码中使用的weaviate向量数据库&#xff0c;不支持window系统&#xff0c;建议换系统/换向量数据库02 智能检索系统 同样需要配置向量数据库&#xff0c;可以先安…

【Linux系统编程】—— 自动化构建工具Makefile指南

文章目录 背景基本使用推导过程适度扩展语法 背景 Makefile 是衡量开发者是否具备完成大型工程能力的一个重要标志。在一个工程中&#xff0c;源文件的数量可能极多&#xff0c;这些文件会按照类型、功能或模块分布在多个目录中。Makefile 通过定义一系列规则&#xff0c;指定…

【JavaWeb01】JavaWeb开发基础:HTML的深度解析与应用

文章目录 前言&#x1f30d;一.B/S 软件开发架构简述&#x1f30d;二.HTML 介绍❄️2.1 官方文档❄️2.2 网页的组成❄️2.3 HTML 是什么❄️2.4html基本结构 &#x1f30d;三.HTML标签1.html 的标签/元素-说明2. html 标签注意事项和细节3.font 字体标签4.标题标签5.超链接标签…

Android-目前最稳定和高效的UI适配方案

谈到适配&#xff0c;首先需要介绍几个基本单位&#xff1a; 1、密度无关像素&#xff08;dp&#xff09;&#xff1a; 含义&#xff1a;density-independent pixel&#xff0c;叫dp或dip&#xff0c;与终端上的实际物理像素点无关 单位&#xff1a;dp&#xff0c;可以保证在…

图片和短信验证码(头条项目-06)

1 图形验证码接口设计 将后端⽣成的图⽚验证码存储在redis数据库2号库。 结构&#xff1a; {img_uuid:0594} 1.1 创建验证码⼦应⽤ $ cd apps $ python ../../manage.py startapp verifications # 注册新应⽤ INSTALLED_APPS [django.contrib.admin,django.contrib.auth,…

java8 springboot 集成javaFx 实现一个客户端程序

1. 先创建一个springboot 程序(此步骤不做流程展示) 2. 更改springboot的版本依赖和导入所需依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</versio…

linux手动安装mysql5.7

一、下载mysql5.7 1、可以去官方网站下载mysql-5.7.24-linux-glibc2.12-x86_64.tar压缩包&#xff1a; https://downloads.mysql.com/archives/community/ 2、在线下载&#xff0c;使用wget命令&#xff0c;直接从官网下载到linux服务器上 wget https://downloads.mysql.co…

数据结构(链表 哈希表)

在Python中&#xff0c;链表和哈希表都是常见的数据结构&#xff0c;可以用来存储和处理数据。 链表是一种线性数据结构&#xff0c;由一系列节点组成&#xff0c;每个节点包含一个数据元素和一个指向下一个节点的指针。链表可以用来实现栈、队列以及其他数据结构。Python中可…