2014-10-23 4 views
0

Есть ли способ или сценарий, который позволит мне взять один из столбцов данных из файла Excel и экспортировать их в текстовый файл, запятой и словом - в одном действии. Использование Save As csv в Excel по-прежнему требует, чтобы вы открыли файл в редакторе и выполнили поиск/замену для достижения этого, но для этого требуется второй и ненужный шаг.Пользовательский экспорт Excel в текстовый файл

В результате я ищу при экспорте КОЛОННА из Excel будет выглядеть следующим образом:

поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, поле, Поле, поле, поле, поле, поле, поле, поле

+1

Единственный способ получить это за один шаг - написать (или записать) некоторые VBA/Macro, которые скопируют столбец, вставить специальный транспонирование, а затем сохранить этот рабочий лист в виде файла csv. Я бы предложил сначала записать макрос, а затем вы можете отредактировать, чтобы настроить именование файла csv и все, что вам нужно. – JNevill

ответ

0

Что-то вроде этого, возможно?

Поставьте свой собственный путь к файлу и имя файла. Предполагается, что данные начинаются со строки 2 в столбце B в Листе 1, но вы можете изменить эти переменные, чтобы соответствовать в коде.

Sub WriteCSVFile() 

Dim ws As Worksheet 
Dim fName As String, Txt1 As String 
Dim fRow As Long, lRow As Long, Rw As Long 
Dim Col As Long 

Set ws = Sheets("Sheet1") 
fName = "C:\yourpath\yourfilename.csv" 
fRow = 2 
Col = 2 
Txt1 = "" 

    With ws 
     lRow = .Cells(Rows.Count, Col).End(xlUp).Row 

     Open fName For Output As #1 

      For Rw = fRow To lRow 
       Txt1 = .Range(.Cells(Rw, Col), .Cells(Rw, Col)) 
        If Rw = lRow Then 
         Print #1, Txt1 
        Else 
         Print #1, Txt1 & ", "; 
        End If 
      Next Rw 

     Close #1 

     MsgBox ".csv file exported" 

    End With 
End Sub 

Существует учебник here, если вы хотите в дальнейшем объяснении.

+0

Я получаю синтаксическую ошибку при: С ws – Paul

+0

Извините, но вы действительно уверены, что это на этой линии? Там кажется мало возможностей для синтаксической ошибки, и я даже не могу ее заставить. Для полноты кода этот код работает нормально со столбцом данных в Col B. Предположительно, вы скопировали и вставили код здесь? – barryleajo

+0

Я слегка изменил его так, чтобы он работал на открытом листе - не уверен, как его добавить здесь. – Paul

0

Sub WriteCSVFile()

'Объявите переменные Dim Ws As Worksheet Dim Fname As String, txt1 As String Dim Frow As Long, lRow As Long, Rw As Long Dim Col As Long

'активный лист Set Ws = ActiveWorkbook.ActiveSheet

' Запрашивать для выходного файла Fname = Application.GetOpenFilename()

'обработка Stop, если файл не указан Если Fname = "False" Then Exit Sub

' Начало строки Frow = 1

'Начало столбца Col = 1

' Выход темп txt1 = ""

With ws 
    ' Get data from sheet 
    lRow = .Cells(Rows.Count, Col).End(xlUp).Row 

    ' Open output file 
    Open fName For Output As #1 

     ' Loop rows of data 
     For Rw = fRow To lRow 
      ' Store data in temp 
      Txt1 = .Range(.Cells(Rw, Col), .Cells(Rw, Col)) 
       ' Check if end of dataset and write data to output accordingly 
       If Rw = lRow Then 
        Print #1, Txt1 
       Else 
        Print #1, Txt1 & ", "; 
       End If 
     Next Rw 

    ' Close output file 
    Close #1 

    ' Alert user of completion 
    MsgBox ".csv file exported" 

End With 

End Sub

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