Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6192|回复: 10

[已解决]请问VBA怎么实现二进制数据的提取

[复制链接]
发表于 2011-11-27 22:53 | 显示全部楼层 |阅读模式
各位大侠们,请问VBA怎么读取二进制代码,并显示到Excel中。例如数据
最佳答案
2011-11-28 17:07
VBA怎么实现二进制数据的提取.rar (448.12 KB, 下载次数: 186)

数据.rar

356.08 KB, 下载次数: 30

评分

参与人数 1 +1 收起 理由
hyl9td + 1 赞一个!

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-11-27 23:15 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-11-28 13:25 | 显示全部楼层
那么的帅 发表于 2011-11-27 23:15
附件有问题

附件为二进制文件,一般是看不到的

回复

使用道具 举报

发表于 2011-11-28 13:26 | 显示全部楼层
你这附件是什么东西啊
回复

使用道具 举报

 楼主| 发表于 2011-11-28 13:29 | 显示全部楼层
吕?布 发表于 2011-11-28 13:26
你这附件是什么东西啊

二进制代码,需要转换才能看到
回复

使用道具 举报

发表于 2011-11-28 14:38 | 显示全部楼层
2010中,
Option Explicit

Sub Demo()
    Dim f As Integer, b() As Byte
    Dim lLen As Long, i As Long
   
    f = FreeFile
    Open ThisWorkbook.Path & "\数据" For Binary As #f
    lLen = LOF(f)
    ReDim b(1 To lLen)
   
    ' 1. 一次性读入
    Get #f, , b()
   
'    ' 2. 逐个读入
'    For i = 1 To LOF(f)
'        Get #f, i, b(i)
'    Next i
   
    Close #f
   
    Dim lU As Long
    Dim arrN() As String, arrS() As String
    Dim lRow As Long, lCol As Long
   
    lU = Int(lLen / 16)
    If lU * 16 < lLen Then lU = lU + 1
   
    ReDim arrN(1 To lU, 1 To 16)
    ReDim arrS(1 To lU, 1 To 16)
    For i = 1 To lLen
        lRow = (i - 1) \ 16 + 1
        lCol = (i - 1) Mod 16 + 1
        arrN(lRow, lCol) = Hex(b(i))
        arrS(lRow, lCol) = Chr(b(i))
    Next
   
    Range("A2").Resize(UBound(arrN, 1), UBound(arrN, 2)) = arrN
    Range("Q2").Resize(UBound(arrS, 1), UBound(arrS, 2)) = arrS
End Sub


回复

使用道具 举报

 楼主| 发表于 2011-11-28 15:26 | 显示全部楼层
吕?布 发表于 2011-11-28 14:38
2010中,
Option Explicit

Open ThisWorkbook.Path & "\数据" For Binary As #f
兄弟,程序执行到这一步显示错误‘75’,提示为路径/文件访问错误
如果我把文件放到D盘中(D:/数据/mrr
回复

使用道具 举报

发表于 2011-11-28 16:59 | 显示全部楼层
Yi.King 发表于 2011-11-28 15:26
Open ThisWorkbook.Path & "\数据" For Binary As #f
兄弟,程序执行到这一步显示错误‘75’,提示为路径 ...

你要把装VBA的Excel文件与你提供的二进制文件"数据"放在同一个文件夹下
另外,由于二进制文件比较长,要2010格式文件才能显示内容(每16字节写一行)
回复

使用道具 举报

发表于 2011-11-28 17:07 | 显示全部楼层    本楼为最佳答案   
VBA怎么实现二进制数据的提取.rar (448.12 KB, 下载次数: 186)
回复

使用道具 举报

 楼主| 发表于 2011-11-28 19:33 | 显示全部楼层
兄弟,不错!谢谢诶
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-30 13:01 , Processed in 0.635696 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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