[算表] vba讀取.dat檔問題

看板Office作者 (陳豬靜)時間4年前 (2020/05/13 19:36), 4年前編輯推噓0(004)
留言4則, 1人參與, 4年前最新討論串1/1
軟體: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

05/13 21:49, 4年前 , 1F
line input改get來做試試,測試是可以
05/13 21:49, 1F

05/13 21:49, 4年前 , 2F
感謝 使用get能行 但想請教一下get 跟line input 差在哪裡 上網找不太到 也搞不太懂 ※ 編輯: s52222b (42.75.211.43 臺灣), 05/13/2020 23:35:48

05/14 07:13, 4年前 , 3F
microsoft docs有這方面的說明
05/14 07:13, 3F

05/14 07:13, 4年前 , 4F
文章代碼(AID): #1UkzlKMj (Office)