Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vba二进制文件导致溢出_Vba_Excel_Ms Office_Ms Word - Fatal编程技术网

vba二进制文件导致溢出

vba二进制文件导致溢出,vba,excel,ms-office,ms-word,Vba,Excel,Ms Office,Ms Word,我试图使用word中的宏将这些数据写入二进制文件。 如果我运行此命令,我会在Put#handle,CByte(“&H”&output(I))行上出现此错误“执行错误溢出(错误6)” 我怎样才能解决这个问题? 谢谢 问题是您没有在lol作业行的末尾添加分隔符。因此,当它们被拆分时,前一行的最后两位将与下一行的前两行连接 错误发生在以下位置: lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|01" lol = lol &am

我试图使用word中的宏将这些数据写入二进制文件。 如果我运行此命令,我会在Put#handle,CByte(“&H”&output(I))行上出现此错误“执行错误溢出(错误6)”

我怎样才能解决这个问题? 谢谢


问题是您没有在
lol
作业行的末尾添加分隔符。因此,当它们被拆分时,前一行的最后两位将与下一行的前两行连接

错误发生在以下位置:

lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|01"
lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00"
解析时,
01
00
(下一行)之间没有分隔符,因此
0100
的值产生溢出


|
结束每个
lol
作业行,错误应该会消失。

问题是您没有在
lol
作业行的末尾添加分隔符。因此,当它们被拆分时,前一行的最后两位将与下一行的前两行连接

错误发生在以下位置:

lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|01"
lol = lol & "00|00|00|00|00|00|00|00|40|00|00|00|00|00|00|00"
解析时,
01
00
(下一行)之间没有分隔符,因此
0100
的值产生溢出


用一个
|
结束你的
lol
作业行,错误应该会消失。

Jason的答案是正确的,但我不确定建立字符串并拆分它以获得数组是最好的方法。您可以考虑只填充一个数组。

Private lol(1 To 4656) As String

Sub HexStringToBinaryFile()

    Dim i As Long
    Dim handle As Long

    lol50

    handle = FreeFile
    Open "C:\test.bin2" For Binary As #handle
        For i = LBound(lol) To UBound(lol)
            Put #handle, , CByte("&H" & lol(i))
        Next i
    Close #handle

End Sub
Sub lol50()

    Dim i As Long

    For i = 1 To 4656
        lol(i) = "00"
    Next i

    For i = 9 To 4656 Step 16
        lol(i) = "40"
    Next i

    lol(4000) = "01"
    lol(4416) = "02"
    lol(4656) = "03"

End Sub

Jason的答案是正确的,但我不确定构建字符串并将其拆分以获得数组是最好的方法。您可以考虑只填充一个数组。

Private lol(1 To 4656) As String

Sub HexStringToBinaryFile()

    Dim i As Long
    Dim handle As Long

    lol50

    handle = FreeFile
    Open "C:\test.bin2" For Binary As #handle
        For i = LBound(lol) To UBound(lol)
            Put #handle, , CByte("&H" & lol(i))
        Next i
    Close #handle

End Sub
Sub lol50()

    Dim i As Long

    For i = 1 To 4656
        lol(i) = "00"
    Next i

    For i = 9 To 4656 Step 16
        lol(i) = "40"
    Next i

    lol(4000) = "01"
    lol(4416) = "02"
    lol(4656) = "03"

End Sub