通達信block_gn.dat為概念板塊檔案,檔案結構為二進制,前384位元組為表頭,不用取,從第386位元組開始,每個板塊占用2813位元組,其中前8位元組為板塊名稱,后2800位元組為包含股票代碼,只需取這兩部份,分別放在A、B兩列,已完成率成部份代碼,轉換部份還沒弄好,請予幫助。
已完成部份代碼如下:
Filename = ThisWorkbook.Path & "\block_gn.dat"
Open Filename For Binary As #1 ' 以只讀的方式打開檔案,參考open方法的幫助
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
uj5u.com熱心網友回復:
自己換了思路,成功解決Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Call CopyMemory(bkName(0), FileByte((i - 1) * 2813), 8)
Call CopyMemory(gpCode(0), FileByte((i - 1) * 2813 + 13), 2800)
BK = StrConv(bkName, vbUnicode)
GP = StrConv(gpCode, vbUnicode)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/216323.html
標籤:VBA
下一篇:如何截取方向鍵訊息
