Private Sub UserForm_Initialize()
Const strFN As String = "C:\1.txt"
Open strFN For Output As #1
Print #1,
Print #1,
Print #1, "1"
Print #1, "90"
Close #1
End sub
Приведенный выше код создает файл и заносит в первые четыре строки значения. В первые две ничего не вводится (но если там что нибудь записано оно удаляется). Как сделать так чтобы значения "1" и "90" вносились сразу в третью и четвертую строки, а первая и вторая игнорировались. Т.е мне нужно внести значения в конкретные строки файла TXT, а остальные не трогать.
moland, могу предложить такой вариант. Создаёте новый пустой текстовый файл. Двигаетесь по старому текстовому файлу. Нужные строки переносите из старого файла в новый файл. В тех местах, где ненужные строки, вставляете свои данные.
Подходит Вам такой вариант? Если подходит, то знаете, как это сделать?
1. Такой вариант подходит. Можете написать, как это сделать?
2. Но мне интересно, может ли VBA с текстовым файлом выполнить следующие действия: открыть его, прочитать первую строку, прочитать вторую строку, записать значение в третью строку, записать значение в четвёртую строку, закрыть его.
При этом не создавая дополнительных файлов.
Пункт 1Код:
Sub Макрос1()
Const strFN_Source As String = "C:\Users\User\Desktop\Источник.txt"
Const strFN_Res As String = "C:\Users\User\Desktop\Результат.txt"
Dim strLine As String
Dim i As Long
' Открытие файла-источника.
Open strFN_Source For Input As #1
' Создание файла-результата.
Open strFN_Res For Output As #2
' В цикле двигаемся по строкам текстового файла.
Do While VBA.EOF(1) = False
' С помощью переменной i определяем, на какой строке мы находимся.
i = i + 1
' Смотрим, на какой строке мы находимся, чтобы сделать нужное действие.
' Если мы находимся на второй строке, то мы вставим свои данные,
' а не будем копировать данные из текстового файла.
If i = 2 Then
' Запись в файл-результат нужных данных.
Print #2, "нужные данные"
' Делаем бессмысленное действие, чтобы курсор перешёл в следующую строку,
' и чтобы строка не была взята из файла-источника.
Line Input #1, strLine
Else
' Копирование строки из файла-источника в переменную strLine.
Line Input #1, strLine
' Запись данных из переменной strLine в файл-результат.
Print #2, strLine
End If
Loop
Close #1
Close #2
End Sub
Пункт 2Можно ли записать данные в нужную строку без использования дополнительного текстового файла - я не знаю. В последовательном доступе - это точно нельзя сделать. Можно попробовать произвольный или бинарный доступ. Но я такое ни разу не делал.
Спасибо.