作者s52222b (陈猪静)
看板Office
标题[算表] vba读取.dat档问题
时间Wed May 13 19:36:49 2020
软体:excel
版本:2010
Dear all大神们:
求解使用vba将档案转档成16进位,结果与转档器不同
概念如下用vba open & input读取binary file
再将个文字转档ASCII码後再转16进位
vba file以及欲转的档案如下
第00000030h 结果跟转档器结果不同,如下图,但找不出原因
求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
档案及程式码如下1.为.dat档2.为excel file3.为对照图
1.
https://reurl.cc/rxEq2x
2.
https://reurl.cc/5lKx96
3.
https://imgur.com/a/J8eMBVw
求解!!!!!!!!
Sub TEST()
Application.ScreenUpdating = False
Dim ss As String
Open "K:\S24200\test.dat" For Binary As #1
Range("a1:b1048576").ClearContents
r = 1
Do While myloc < LOF(1)
'Do While Not EOF(1)
Line Input #1, s
Debug.Print "s=" & Len(s)
If s = "" Then
Range("b" & r) = Range("b" & r) & "00"
Else
For c = 1 To Len(s)
aa = Mid(s, c, 1)
aa = Asc(aa)
bb = WorksheetFunction.Dec2Hex(aa)
If Len(bb) Mod 2 = 1 Then
bb = WorksheetFunction.Dec2Hex(aa, Len(bb) + 1)
Range("b" & r) = Range("b" & r) & bb
Else
Range("b" & r) = Range("b" & r) & bb
End If
Next
End If
'
Do While Len(Range("b" & r)) > 32
Range("b" & r + 1) = Right(Range("b" & r), Len(Range("b" & r)) -
32)
Range("b" & r) = Left(Range("b" & r), 32)
r = r + 1
Loop
myloc = Loc(1)
Loop
Close #1
For r = 2 To Range("b1048576").End(xlUp).Row
Range("a" & r) = WorksheetFunction.Dec2Hex(r - 1, 7) & "0h"
Next
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.205.177.120 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1589369812.A.5AD.html
※ 编辑: s52222b (123.205.177.120 台湾), 05/13/2020 19:46:34
※ 编辑: s52222b (123.205.177.120 台湾), 05/13/2020 19:50:45
1F:→ soyoso: line input改get来做试试,测试是可以05/13 21:49
感谢 使用get能行
但想请教一下get 跟line input 差在哪里
上网找不太到 也搞不太懂
※ 编辑: s52222b (42.75.211.43 台湾), 05/13/2020 23:35:48
3F:→ soyoso: microsoft docs有这方面的说明 05/14 07:13