2016-06-02 8 views
0

У меня есть файл Excel, который выглядит следующим образом:Экспорт Excel-Cells в TXT файл с определенной длиной

http://i.stack.imgur.com/AMi3c.jpg

(жаль не встраивание изображения, но я не позволил сделать это в тот момент, потому что я только что зарегистрировался здесь)

Я хочу экспортировать это в TXT-файл, где указано количество символов каждого столбца.

Например: Каждая ячейка из столбца A должна иметь ровно 3 символа в текстовом файле, столбец B должен иметь 5. Если моя ячейка не содержит точного количества символов, тогда файл TXT должен быть заполнен пробелами.

Так файл TXT должен выглядеть следующим образом:

http://i.stack.imgur.com/5U7AM.jpg

Я работал с Excel Макросы и раньше, но я не совсем уверен, как начать работу на этом. Спасибо за любую помощь, очень высоко ценится

+0

Вы можете взглянуть на следующий код VBA: http://stackoverflow.com/questions/ 35434220/VBA-замена-запятых-в-CSV-не-внутри-qoutes/35440236 # 35440236. Он работает с текстовыми файлами и редактирует их. С этим в качестве отправной точки вам должно быть легко понять остальных (учитывая тот факт, что вы раньше работали с Excel marcos). – Ralph

ответ

1

Это код, который работал для меня:

Sub Export_File() 

Dim myFile As String, r As Integer, mypath As String, dline As String 

mypath = "C:\RESULTS\" 'path for file 
myFile = "file.txt" 'file name 
dline = "" 

For r = 2 To Range("A" & Rows.Count).End(xlUp).Row 

A = Cells(r, "A") & Application.WorksheetFunction.Rept(" ", 3 - Len(Cells(r, "A"))) 
B = Cells(r, "B") & Application.WorksheetFunction.Rept(" ", 5 - Len(Cells(r, "B"))) 
C = Cells(r, "C") & Application.WorksheetFunction.Rept(" ", 5 - Len(Cells(r, "C"))) 
D = Cells(r, "D") & Application.WorksheetFunction.Rept(" ", 5 - Len(Cells(r, "D"))) 
E = Cells(r, "E") & Application.WorksheetFunction.Rept(" ", 7 - Len(Cells(r, "E"))) 
F = Cells(r, "F") & Application.WorksheetFunction.Rept(" ", 7 - Len(Cells(r, "F"))) 
G = Cells(r, "G") & Application.WorksheetFunction.Rept(" ", 5 - Len(Cells(r, "G"))) 
H = Cells(r, "H") & Application.WorksheetFunction.Rept(" ", 5 - Len(Cells(r, "H"))) 
I = Cells(r, "I") & Application.WorksheetFunction.Rept(" ", 5 - Len(Cells(r, "I"))) 


dline = dline & A & B & C & D & E & F & G & H & I & vbLf & vbCr 

Next r 

Open mypath & myFile For Output As #1 'Replaces existing file 
Print #1, dline 
Close #1 

MsgBox ("File Created " & mypath & myFile) 


End Sub