Vba 文本文件被部分读取

Vba 文本文件被部分读取,vba,ms-word,Vba,Ms Word,我试图读取整个文本文件,复制其所有文本,并将其粘贴到当前文档的末尾 Selection.EndKey Unit:=wdStory hF = FreeFile() Open "G:\a 1.txt" For Input As #hF Selection.TypeText (Input$(LOF(hF), #hF)) Close #hF 这是从文本文件复制文本,但不是复制整个文件文本。它只复制部分文件文本。某些文本文件会发生这种情况。对于其他文本文件,它工作正常。你能告诉我原因吗 尝试使用

我试图读取整个文本文件,复制其所有文本,并将其粘贴到当前文档的末尾

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

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

尝试使用此解决方案:

Selection.EndKey wdStory
Selection.InsertParagraphAfter   'optionally, add additional paragraph
Selection.InsertFile "G:\a 1.txt"
更一般地说(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