Я пытаюсь использовать Excel VBA для записи в текстовый файл. Я делаю несколько из них:
MyFile1 = "C:\outputFromExcel1.txt"
fnum1 = FreeFile()
Open MyFile1 For Output As fnum1
и затем при записи в них как это:
Print #fnum1, text
Все переменные в вышеупомянутом объявляются только с Dim
. Я пишу сотни строк в файлы и, очень редко, строки являются усеченными - т.е. концы обрубаются. Существует ли лучший способ записать в файл в Excel VBA?
Править: Я только что понял, что это всегда - последние строки, которые будут записаны, которые усеченные. Таким образом, я предполагаю, что должен закрыть или сбросить файлы так или иначе?
Вы можете использовать Close #fnum1
, чтобы закрыть хэндл файла, и он должен промыть оставшееся содержимое буфера.
Не рассматривали ли вы возможность записать текст на другой лист (или в другую рабочую книгу) и затем использовать:
ActiveWorkbook.SaveAs Filename:="C:\MyFile.txt", FileFormat:=xlText
Не уверен, что это даст лучшие результаты (в плане производительности и/или форматирования), но, возможно, стоит попробовать.
Да, вам следует закрывать файлы с помощью метода Close
. Я не уверен, что это вызывает проблемы, но вы должны делать это в любом случае.
Если вы много работаете с файлами в своем коде VBA, возможно, стоит взглянуть на использование FSO (FileSystemObject), я думаю, что изначально он был предназначен для того, чтобы VBScript мог обрабатывать файлы, но я предпочитаю его встроенным VB6 и VBA. в обработке файлов. См. здесь для получения более подробной информации (на одной из этих страниц также есть большой пример, демонстрирующий, как делать большинство вещей, которые вам нужны).