2013-12-08 3 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

Спасибо! Это отлично сработало :) – genonymous

+0

+1 хороший и образец. – brettdj

1

В более общем плане (решение KazJaw совершенно здесь), то проблема может быть то, что вы читаете Юникод или аналогичные текстовые файлы ... более 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 
Смежные вопросы