以特定方式导入原始文件

我想导入一个不是纯文本的原始文件。 我想要导入的值是我需要导入的一行字符,拆分为单个字符,并在00和FF之间转换为hex值。 有49152个字符,我想要导入3列。 一个3 x 16384像这样:

01 02 03 04 05 06 

↓这个↓的作品,但不给零前导。 (1应该是01)。 它也忽略了不包括所有三列的值

Sub Demo()Dim fl As String Dim dat As Variant Dim fn As Integer Dim rOutput As Range Dim idx As Long Dim FileLength As Long Dim v

 fn = FreeFile fl = "C:\Users\1097180551N\Desktop\untitled.png" Set rOutput = [A1] Open fl For Binary Access Read As #fn FileLength = LOF(fn) ReDim dat(1 To FileLength \ 3, 1 To 3) For idx = 1 To UBound(dat, 1) v = Input(3, #fn) dat(idx, 1) = Hex(Asc(Mid$(v, 1, 1))) dat(idx, 2) = Hex(Asc(Mid$(v, 2, 1))) dat(idx, 3) = Hex(Asc(Mid$(v, 3, 1))) Next rOutput.Resize(UBound(dat, 1), 3) = dat Close #fn End Sub 

你最近的更新代码几乎在那里。 我会读取文件为二进制而不是input ,并将字符转换为可打印的forms。 另外,使用变体数组将比直接写入表单更快

 Sub Demo() Dim fl As String Dim dat As Variant Dim fn As Integer Dim rOutput As Range Dim idx As Long Dim FileLength As Long Dim v fn = FreeFile fl = "C:\Users\1097180551N\Desktop\txt.raw" Set rOutput = [A1] Open fl For Binary Access Read As #fn FileLength = LOF(fn) ReDim dat(1 To FileLength \ 3, 1 To 3) For idx = 1 To UBound(dat, 1) v = Input(3, #fn) dat(idx, 1) = Hex(Asc(Mid$(v, 1, 1))) dat(idx, 2) = Hex(Asc(Mid$(v, 2, 1))) dat(idx, 3) = Hex(Asc(Mid$(v, 3, 1))) Next rOutput.Resize(UBound(dat, 1), 3) = dat Close #fn End Sub