為什麼這篇bin檔轉excel鄉民發文收入到精華區:因為在bin檔轉excel這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者s52222b (陳豬靜)看板Office標題[算表] vba讀取.dat檔問題時間Wed Ma...
軟體: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://www.ptt.cc/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
但想請教一下get 跟line input 差在哪裡
上網找不太到 也搞不太懂
※ 編輯: s52222b (42.75.211.43 臺灣), 05/13/2020 23:35:48