[爆卦]bin檔轉excel是什麼?優點缺點精華區懶人包

為什麼這篇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
soyoso: line input改get來做試試,測試是可以05/13 21:49
soyoso: https://i.imgur.com/UENcUiO.jpg05/13 21:49
感謝 使用get能行

但想請教一下get 跟line input 差在哪裡

上網找不太到 也搞不太懂
※ 編輯: s52222b (42.75.211.43 臺灣), 05/13/2020 23:35:48
soyoso: microsoft docs有這方面的說明 05/14 07:13
soyoso: https://i.imgur.com/IRRox5o.jpg 05/14 07:13

你可能也想看看

搜尋相關網站