2016-09-02 10 views
1

Я пытаюсь создать командную кнопку, которая экспортирует мою таблицу в текстовый файл, разделенный вкладкой, и добавляет к нему некоторые динамические заголовки. Я хочу, чтобы заголовки сказать: 1/х 2/х 3/х 4/х и так далее, где х обозначает общее количество столбцовэкспорт текстового файла excel

Это мой код так далеко, что я получил от веб-сайта:

Private Sub CommandButton1_Click() 

    Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer 

    myFile = Application.DefaultFilePath & "\projekt.txt" 

    Set rng = Selection 

    Open myFile For Output As #1 

    For i = 1 To rng.Rows.Count 
     For j = 1 To rng.Columns.Count 

      cellValue = rng.Cells(i, j).Value 

      If j = rng.Columns.Count Then 
       Write #1, cellValue 
      Else 
       Write #1, cellValue, 
      End If 

     Next j 
    Next i 

    Close #1 
End Sub 

проблема заключается в том, это зависит от меня маркировки заполненные ячейки для того, чтобы работать, также она производит только разделенные запятыми текстовые файлы, я хочу вкладку разделенных файлов без «». Также он не производит заголовки.

1/5 2/5 3/5 4/5 5/5 
x(total) rows 
Data Data Data Data Data 
Data Data Data Data Data 
Data Data Data Data Data 
Data Data Data Data Data 
+0

Не могли бы вы после того, что вы хотите, чтобы вывод выглядеть? –

+0

Я добавил, что, спасибо за вход. – Heresh

ответ

2

Это только выходы, выбранные клетки, потому что в вашем коде у вас есть в строке 4

Set rng = Selection 

Если вы хотите экспортировать всегда определенный диапазон, например, A1: E100, вы можете изменить эту строку,

Set rng = Range("A1:E100") 

Если этот диапазон включает заголовки, то ваш экспорт также будет иметь заголовки.

Вторая проблема,

Это разделенные запятой, потому что у вас есть

Write #1, cellValue, 

Чтобы сделать вкладку demilited, измените эту строку

Write #1, cellValue & vbTab 

это должно быть полным код для раздела записи, vbNewline подразумевает символ «новой строки» (илитакже может), vbTab это символ табуляции

If j = rng.Columns.Count Then 
    Write #1, cellValue & vbNewLine 
Else 
    Write #1, cellValue & vbTab 
End If 
+0

Спасибо за помощь, но мне интересно, так или иначе, мне не нужно указывать диапазон, я имею в виду, что он экспортирует только столбцы и строки, которые используются, я имею в виду, если в моей таблице 10 строк и 15 столбцов, которые будут экспортировать только эти клетки. – Heresh

+0

@Heresh вы конечно можете. Попробуйте изучить это ** [вопрос] (http://stackoverflow.com/questions/13686801/how-to-determine-the-last-row-used-in-vba-including-blank-spaces-in-between) * * о том, как определить последнюю строку. он работает одинаково для столбца. – Rosetta

+0

после последней строки вы можете написать код типа «Set rng = Range» («A1: E» и «LastRow»), где «LastRow» - это назначение переменной с последним значением строки. – Rosetta

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