Страницы: 1
RSS
создание текстового файла
 
есть макрос, который осздает текстовый файл.  
но длина строки в текстовом файле одна и таже.    
 
Нужно чтобы каждая с строка имела разную длину (длины каждой строки имеют размеры: 58, 69, 15, 36 и т.д. 11 значений).  
 
Как это можно сделать ?  
 
вот макрос:  
 
Sub start2()    
 
Open Range("E1") & "\" & Range("E4") & ".txt" For Output As #1 'путь сохранения текстового файла  
Dim s As String * 410  ' длина текстовой строки 410. Нужно чтобы она менялась  
s = ""  
 
For y = 2 To Cells(Rows.Count, 2).End(xlUp).Row Step 3 ' берем данные из листа для заполенения значений в тектовом файле  
For x = 1 To Cells(y, Columns.Count).End(xlToLeft).Column'берем данные из листа для заполенения значений в тектовом файле  
 
Mid(s, Cells(y, x)) = Cells(y + 2, x) 'заполняем текстовую строку  
Next  
Print #1, s; 'печататем текстовую строку в текстовом файле    
s = ""  
Print #1,  
Next  
 
Reset  
End Sub  
 
для удобства так же прикладываю работающйи файл
 
что-то вы какую-то фигню в коде написали:  
Mid(s, Cells(y, x)) = Cells(y + 2, x)    
или взяли неподходящий код.    
 
сделать правильно - несложно, но... исходя из этого макроса, неясно, как должно быть  
 
вы прикрепите пример желаемого текстового файла - а мы поможем с кодом.  
 
 
PS: Почему надо выгружать в текст только каждую третью строку???  
(For y = 2 To Cells(Rows.Count, 2).End(xlUp).Row Step 3)  
 
 
PPS: Может, сделать проще?  
http://excelvba.ru/code/Range2CSV  
http://excelvba.ru/code/Range2TXT
 
вариант конечного файла прикладываю.  
 
текст не загружается в каждую третью строку, а берется значение с каждой 3-й строки с листа "work" и вставляется в текстовый файл.  
 
на листе work находится начиная со строки 2:  
строка 2: номер колонки в текстовом файле куда вставлять значение  
строка 3: длина строки для вставляемого значения  
строка 4: само значение, которое прописывается в текстовом файле.  
 
дальше все повторяется для оставшихся 10 строк.
 
Объясните, хотя бы как задать цикл при котором будет меняться параметр длины строки в выражении "Dim s As String * 200" ?  
 
 
Dim s As String * 200    
s = ""  
Mid(s, Cells(y, x))    
Print #1, s
Страницы: 1
Читают тему
Наверх
Loading...