2014-05-29 6 views
1

Я пытаюсь распечатать файл после открытия его в файл, который я создаю с помощью VBA. Часть, за которую я застрял, записывает файл. Вот что я до сих пор.Запись в текстовый файл в VBA

Sub test() 
Dim myFile As String 
Dim testFile As String 
Dim intChoice As Integer 
Dim fs, f 

myFile = Application.GetSaveAsFilename & "kml" 

Open myFile For Output As #1 

Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False 
intChoice = Application.FileDialog(msoFileDialogOpen).Show 
If intChoice <> 0 Then 
    testFile = Application.FileDialog(_ 
     msoFileDialogOpen).SelectedItems(1) 
End If 


Set fs = CreateObject("Scripting.FileSystemObject") 
Set f = fs.OpenTextFile(testFile) 

Print #1, f 

Close #1 

End Sub 

ответ

2

Прочитайте текстовый поток по очереди и распечатайте по мере необходимости. Сделайте это в цикле.

Set fs = CreateObject("Scripting.FileSystemObject") 
Set f = fs.OpenTextFile(testFile) 

Do While Not f.AtEndOfStream 
    Print #1, f.ReadLine 
Loop 

Set f = Nothing 
Set fs = Nothing 

Или может быть в состоянии опустить петлю и просто сделать Print #1, f.ReadAll.

+1

'Print # 1, f.ReadAll'работал, спасибо –

+0

Отлично , Да, я не тестировал фактический оператор 'Print' (я использовал' Debug.Print', чтобы поместить его в консоль, поэтому я не был уверен, что 'ReadAll' будет работать, хотя я полагал, что это возможно. Cheers! –

1

Самый простой способ распечатать текстовый файл (в Windows) - отправить его в Блокнот с помощью переключателя «/ p». Это отправит его на принтер по умолчанию.

Shell "Notepad /p C:\Users\Andrew\Documents\test.txt" 

похоже, что вы используете этот код из Excel. В этом случае вы также можете открыть текстовый файл в Excel и распечатать его оттуда.

+0

+1 для опрятного трюка :), но я не думаю, что он отвечает на вопрос (плохой выбор слов на стороне OP, не беспокойтесь!) –

Смежные вопросы