部分读取文本文件

时间:2013-12-08 18:49:55

标签: vba word-vba

我正在尝试阅读整个文本文件,复制其所有文本并将其粘贴到最后的当前文档中。

Selection.EndKey Unit:=wdStory
hF = FreeFile()
Open "G:\a 1.txt" For Input As #hF
    Selection.TypeText (Input$(LOF(hF), #hF))
Close #hF

这是从文本文件中复制文本,但它不是复制整个文件文本。它仅复制部分文件文本。某些文本文件正在发生这种情况。对于其他文本文件,它工作正常。你能告诉我这是什么原因吗?

2 个答案:

答案 0 :(得分:2)

尝试使用此解决方案:

Selection.EndKey wdStory
Selection.InsertParagraphAfter   'optionally, add additional paragraph
Selection.InsertFile "G:\a 1.txt"

答案 1 :(得分:1)

更一般地说(KazJaw的解决方案在这里很完美),问题可能在于您正在读取unicode或类似的文本文件...每个字符超过1个8位字节。 LOF以字节为单位给出长度,但输入读取期望被告知要读取多少个字符。 InputB接受字节:

Dim lLength As Long
Dim sContents As String

Debug.Print "ASCII FILE"
Debug.Print FileLen("c:\temp\ascii.txt")
Open "c:\temp\ascii.txt" For Input As 1
Debug.Print LOF(1)
'Debug.Print Len(Input$(LOF(1), #1))

sContents = Input$(LOF(1), #1)
MsgBox sContents

Close #1

Debug.Print "UNICODE FILE"
Debug.Print FileLen("c:\temp\unicode.txt")
lLength = FileLen("c:\temp\unicode.txt")
Open "c:\temp\unicode.txt" For Binary As 2
Debug.Print LOF(2)
'Debug.Print Len(InputB(lLength, #2))
sContents = InputB(lLength, #2)
Debug.Print Len(sContents)
MsgBox sContents
Close #2