所以我有一个很大的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
所以我已经对所有这些进行了测试,并且一切正常。附加到末尾。只是不适合大文件。
答案 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