VBA写入非常大的字符串

时间:2019-02-08 13:53:16

标签: vba binary hex basic

所以我有一个很大的vba字符串,我试图以二进制形式写入文件。我有一个功能如此出色的功能。我有一个很长的字符串,可以说大约80k。该字符串正确地从文件中读取,正确地通过功能,正确地打印到屏幕。但是无论我做什么,以任何形式或形式我都可以将超过39k放入文件中。我将字符串拆分为较小的位数,以了解这是VBA的局限性。然后一次将其传递给我的功能42个字符。 Seek(LOF)+1 put是我在打开垃圾箱之后所做的,但是...我怎么称呼它并不重要。 Binary,ASCI,一次编写所有内容。我只得到最后的39k。这是im用于写入文件的函数。据我所知,这是一个内存限制,而不是语法错误,可能与我的代码形式无关,甚至与我似乎没有得到的某些东西无关。

sub IBorrowedThis(hex_val as string)

dim output() as string
dim handle as long
output = Split(hex_val, "|")
handle = FreeFile
open "fp" for binary as #handle

For i = LBound(output) to Unbound(output)

seek #handle,LOF(handle) + 1
  put #handle, , cbyte("&H" & output(i))
next i

close #handle

end sub

所以我已经对所有这些进行了测试,并且一切正常。附加到末尾。只是不适合大文件。

2 个答案:

答案 0 :(得分:0)

将二进制字符串写入文件的另一种更简单的方法:

SUB WriteBinaryStringToFile (hex_val AS STRING)
    DIM handle AS LONG
    handle = FREEFILE
    OPEN "binary2.tst" FOR BINARY AS #handle
    SEEK #handle, LOF(handle) + 1
    PUT #handle, , hex_val
    CLOSE #handle
END SUB

答案 1 :(得分:-1)

将二进制字符串写入文件的简单方法:

SUB WriteBinaryStringToFile (hex_val AS STRING)
    DIM c AS STRING * 1
    DIM I AS LONG
    DIM handle AS LONG
    handle = FREEFILE
    OPEN "fp" FOR BINARY AS #handle
    FOR I = 1 TO LEN(hex_val)
        c = MID$(hex_val, I, 1)
        SEEK #handle, LOF(handle) + 1
        PUT #handle, , c
    NEXT I
    CLOSE #handle
END SUB