【vba】使用Excel来根据股票代码获取股票名称

本文介绍了如何在Excel中使用VBA宏,通过发送HTTP请求获取股票名称,特别适用于没有专业金融数据平台账号且需要处理大量数据的情况,提高了工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在金融分析和投资领域,我们经常需要根据股票代码获取股票名称。虽然有很多在线的金融数据平台可以提供这个功能,但是如果你正在使用Excel,同时没有Wind、同花顺iFind和Choice账号,并且需要处理大量的数据,那么在Excel中直接获取股票名称会更加方便和高效。在本文中,笔者将介绍如何使用Excel的VBA宏来根据股票代码获取股票名称。

首先,我们需要创建一个自定义的Excel函数。这个函数将发送一个HTTP请求到指定的URL,然后使用指定的字符编码来处理返回的数据。

步骤1:打开Excel的“开发工具”选项卡(如果已经有了,可以跳过)

  • 打开Excel,点击菜单栏上的“文件”选项,然后选择“选项”。

  • 在“Excel选项”窗口中,点击“自定义功能区”。
  • 在右侧的列表中,找到并勾选“开发工具”,然后点击“确定”。

现在,你应该可以在菜单栏上看到“开发工具”选项卡了。

步骤2:打开VBA编辑器

  1. 点击“开发工具”选项卡,然后点击“Visual Basic”按钮。这将打开VBA编辑器。

步骤3:创建一个新的模块

  1. 在VBA编辑器中,点击菜单栏上的“插入”选项,然后选择“模块”。这将创建一个新的模块。

步骤4:编写自定义函数

现在,你可以在新的模块中编写你的自定义函数了。你可以将以下的代码复制并粘贴到模块中:

以下是这个函数的代码:

Function FetchStockName(key As String) As String

    Dim URL As String
    Dim http As Object
    Dim response As String
    Dim stream As Object
    Dim start As Integer
    Dim finish As Integer
    Dim i As Integer

    ' 设置URL
    URL = "https://suggest.sinajs.cn/suggest/type=&key=" & key

    ' 创建一个HTTP对象
    Set http = CreateObject("MSXML2.ServerXMLHTTP")

    ' 发送GET请求
    http.Open "GET", URL, False
    http.send

    ' 创建一个Stream对象
    Set stream = CreateObject("ADODB.Stream")
    stream.Open
    stream.Type = 1 ' Binary
    stream.Write http.responseBody

    ' 转换字符编码
    stream.Position = 0
    stream.Type = 2 ' Text
    stream.Charset = "gb2312" ' 使用GB2312编码
    response = stream.ReadText

    ' 关闭Stream
    stream.Close

    ' 跳过前3个逗号
    start = 1
    For i = 1 To 4
        start = InStr(start, response, ",") + 1
    Next i

    ' 查找第4个逗号
    finish = InStr(start, response, ",")

    ' 提取股票名称
    FetchStockName = Mid(response, start, finish - start)

End Function

步骤2:在Excel单元格中使用这个函数

一旦你创建了这个函数,你就可以关闭Visual Basic窗口,并在Excel单元格中使用它了。例如,你可以在Excel单元格里像这样使用这个函数:=FetchStockName("600019")。这个函数将返回股票代码为"600019"的股票的名称。也可以将参数指定为对于单元格的引用,如=FetchStockName(A2)。

这样子,通过使用Excel的VBA宏,我们可以方便地在Excel中根据股票代码获取股票名称。这个技巧可以帮助我们更有效地处理金融数据,提高我们的工作效率。

反思:数据获取的原理

  • HTTP请求:通过创建MSXML2.ServerXMLHTTP对象,VBA能够发送HTTP请求到指定的URL。这在本质上模拟了浏览器或其他HTTP客户端如何向服务器请求数据的过程。
  • 数据编码处理:网络上的数据可以以不同的字符编码格式存在,例如UTF-8或GB2312。为了正确显示这些数据,接收方需要知道数据是如何编码的。在这个例子中,数据以GB2312编码返回,这是一种广泛用于简体中文字符的编码格式。使用ADODB.Stream对象,VBA能够将二进制的响应体转换为文本,并且指定字符集为GB2312,以正确解析和显示中文字符,这是这个方法的关键,因为如果直接使用WEBSERVICE函数会使用UTF-8解码导致返回乱码。
  • 字符串处理:提取公司简称涉及到字符串分割和提取特定部分的操作。VBA的字符串函数(如InStrMid)被用于定位和提取公司简称。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值