【问题标题】:How to create a file from hex code in Excel/VBA如何在 Excel/VBA 中从十六进制代码创建文件
【发布时间】:2015-07-10 14:16:40
【问题描述】:

我在 Excel 工作簿中有十六进制格式的代码。每个 2 位数的代码都在一个单独的单元格中,因此它看起来像 4D|54|68|64|00|00|00|06 等。也可能有一些带有 4 位或 6 位数的单元格,如果它让它变得更简单。有什么方法可以从这里编码文件吗?实际上我需要它,以便在十六进制编辑器中打开文件将显示代码。我感觉这可能涉及 HEX2DEC 或 HEX2BIN,但即使那样我也不知道从那里去哪里。

【问题讨论】:

  • 您的 Excel 工作簿是什么文件格式?您使用的是哪个十六进制编辑器?到目前为止,您尝试过什么?
  • .xlsx 是默认的,但它是 .xls 或 .xlsm 没有问题。使用 HxD 检查十六进制代码。我尝试将十六进制转换为 ASCII 和 ANSI 并将其写入 .txt,但转换回来并没有给我留下原始的十六进制值。

标签: excel vba binary hex decimal


【解决方案1】:

您实际上并没有说您做了什么,但 textfile 函数会进行字符转换。使用二进制模式的流对象写入磁盘。使用 write 方法将字节数组放入其中。并且像文本文件函数一样避免使用 VBA 的字符或字符串函数。

Sub test()
     Dim ByteArray(4) As Byte

     ByteArray(0) = CByte(55)
     ByteArray(1) = CByte(55)
     ByteArray(2) = CByte(55)
     ByteArray(3) = CByte(55)

     Set BS = CreateObject("ADODB.Stream")
     BS.Type = 1
     BS.Open
     BS.Write ByteArray
     BS.SaveToFile "c:\users\test", 2

End Sub

【讨论】:

    【解决方案2】:

    在将字符串转换为字节方面可能不是最有效的解决方案,但只需以二进制模式打开文件并将字节放入其中就可以了:

    Sub HexStringToBinaryFile()
    
        Dim hex_val As String
        hex_val = "4D|54|68|64|00|00|00|06"
    
        Dim output() As String
        output = Split(hex_val, "|")
    
        Dim handle As Long
        handle = FreeFile
        Open "C:\Dev\test.bin" For Binary As #handle
    
        Dim i As Long
        For i = LBound(output) To UBound(output)
            Put #handle, , CByte("&H" & output(i))
        Next i
    
        Close #handle
    
    End Sub
    

    【讨论】:

    • 成功了!成功了!这正是我一直在寻找的。可能是愚蠢的后续问题:有没有办法用另一个文件名另存为 .bin 文件?
    • @JamesKissmer - 当然。您可以随意命名输出文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2018-09-04
    • 2019-11-28
    • 1970-01-01
    • 2013-11-05
    • 2013-04-12
    • 2015-01-20
    相关资源
    最近更新 更多