ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3190|回复: 2

[求助] 求用VBA把通达信block_gn.dat转换到表格的代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-14 11:59 | 显示全部楼层 |阅读模式
通达信block_gn.dat为概念板块文件,文件结构为二进制,前384字节为表头,不用取,从第386字节开始,每个板块占用2813字节,其中前8字节为板块名称,后2800字节为包含股票代码,只需取这两部份,分别放在A、B两列,已完成率成部份代码,转换部份还没弄好,请予帮助。


文件用记事本打开样子如下:

block_gn.dat文件结构

block_gn.dat文件结构




要达到的要求如下:


结果

结果



已完成部份代码,请补充中间转换部份
Filename = ThisWorkbook.Path & "\block_gn.dat"
Open Filename For Binary As #1  
FileLen = LOF(1) - 386
ReDim FileByte(FileLen) As Byte
Get #1, 387, FileByte() '第386位(0起头)开始板块信息,每块点2813字节,至3199字节开始第二板块
Close #1

ReDim FileStr(FileLen) As String
For i = 1 To FileLen
  j = i Mod 2813  '取每个板块记录数
-----------------------------------------
求中间转换部份
---------------------------------------
if j=0 then
         Sheet1.Cells(Int(i / 2813) + 2, 1) = bkname  '板块名称
        Sheet1.Cells(Int(i / 2813) + 2, 2) = gpcode   ’包含股票代码
        bkname = ""
        gpcode = ""
end if
Next i
  


谢谢。
楼主












block_gn.rar

30.61 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-2 11:29 | 显示全部楼层
自己来吧,试过用chrB不行,后来用 StrConv(bkName, vbUnicode)解决。

TA的精华主题

TA的得分主题

发表于 2023-3-22 19:11 | 显示全部楼层
hlrong 发表于 2020-12-2 11:29
自己来吧,试过用chrB不行,后来用 StrConv(bkName, vbUnicode)解决。

请教代码!!!大神!!!!!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 08:12 , Processed in 0.037065 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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