2013-12-08 76 views
1

我正在尝试读取整个文本文件,复制其所有文本并将其粘贴到当前文档末尾。部分读取文本文件

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

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

回答

2

尝试这种解决方案:

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

Thanks!这完美的工作:) – genonymous

+0

+1不错,并示例。 – brettdj

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