Диапазон Excel скопирован и транспонирован, вставлен в блокнот.

Я новичок в VB и хотел бы, чтобы данные, которые в настоящее время отображаются вертикально в диапазоне, подобном этому, в Excel:

  1. Лондон,
  2. Нью-Йорк,
  3. Токио,
  4. Париж,
  5. Москва,

Для последующего копирования и вставки в файл .txt по горизонтали

то есть к этому: Лондон, Нью-Йорк, Токио, Париж, Москва

а потом спасли.

Я написал следующий пост google и SO, и он работает, но элемент транспонирования не работает, и я немного запутался (он все еще вставляет его как вертикальный список)

В настоящее время список имен составляет примерно 3 тыс., Поэтому я не хочу делать это в Excel с помощью TRANSPOSE(). Но так как мне нужны имена для другой программы, которой это нужно в этом формате.

Лондон, Нью-Йорк, Токио, Париж, Москва

Любое направление приветствуется. СПАСИБО!

    Option Explicit 

    Sub ExportFile()

    Dim ff As Long, lRow As Long

    Const NameOfTheSheet As String = "Names"

    Const sTextTileDirectoryPath As String = "C:\Users\PCHome\Desktop\"

    ff = VBA.FreeFile

    With ThisWorkbook.Sheets(NameOfTheSheet)
        lRow = .Range("AA" & Rows.Count).End(xlUp).Row
        Open sTextTileDirectoryPath & .Range("J25").Value & ".txt" For Output Access Write As #ff
            Print #ff, Join(Evaluate(Replace(Replace("transpose(#AA2:AA@)", "#", "'" & NameOfTheSheet & "'!"), "@", lRow)), vbNewLine)
        Close #ff
    End With

    MsgBox "Text File Created", vbInformation

    End Sub

person ChyG    schedule 24.10.2017    source источник
comment
Разве сохранение его в виде файла csv не поможет?   -  person Kyoujin    schedule 25.10.2017
comment
@Kyoujin - я думаю, что ОП пытается на лету преобразовать строки в столбцы.   -  person    schedule 25.10.2017


Ответы (1)


Делайте все это в VBA с помощью Application.Transpose.

Print #ff, Join(Application.Transpose(worksheets(NameOfTheSheet ).Range("AA2:AA" & lRow).Value), ",") & vbNewLine
person Community    schedule 24.10.2017
comment
На самом деле, пока вы находитесь внутри этого блока With ... End With, часть worksheets(NameOfTheSheet ) этой строки кода является избыточной. - person ; 25.10.2017