Как отформатировать как текст, используя Text-To-Columns - PullRequest
0 голосов
/ 15 февраля 2020

Этот код работает, используя текст в столбцы, чтобы разделить столбец A на столько столбцов, сколько мне нужно, но я не могу найти способ сделать это со всеми столбцами, выведенными в текстовом формате.

Sub TxT_to_Columns()
    ActiveWorkbook.ActiveSheet.Range("A:A").TextToColumns _
    Destination:=Range("A1"), _
    DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, _
    Tab:=False, _
    Semicolon:=False, _
    Comma:=False, _
    Space:=False, _
    Other:=True, _
    OtherChar:="|"
End Sub

Как мне сделать то же самое, но вывести все столбцы в текстовый формат?

Спасибо,

Ответы [ 2 ]

2 голосов
/ 15 февраля 2020

Вы используете FieldInfo:

FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2)),

FieldInfo использует массив массивов: Array(Array(Column,Type),...)

Здесь вы можете получить типы:

https://docs.microsoft.com/en-us/office/vba/api/excel.xlcolumndatatype

Если вы знаете, что хотите сделать все столбцы, вы можете предварительно заполнить переменную переменной arr:

Sub TxT_to_Columns()
    Dim arr(1 To 10) As Variant

    arr(1) = Array(1, 2)
    arr(2) = Array(2, 2)
    arr(3) = Array(3, 2)
    arr(4) = Array(4, 2)
    arr(5) = Array(5, 2)
    arr(6) = Array(6, 2)
    arr(7) = Array(7, 2)
    arr(8) = Array(8, 2)
    arr(9) = Array(9, 2)
    arr(10) = Array(10, 2)


    ActiveWorkbook.ActiveSheet.Range("A:A").TextToColumns _
        Destination:=ActiveWorkbook.ActiveSheet.Range("A1"), _
        DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, _
        Tab:=True, _
        Semicolon:=False, _
        Comma:=False, _
        Space:=False, _
        Other:=True, _
        OtherChar:="|", _
        FieldInfo:=arr
End Sub
1 голос
/ 15 февраля 2020

Во-первых, весь кредит должен go Скотту Крейнеру!

Я покажу только более короткий способ построения массивов, как ответ на вопрос, который @Sabatino Ognibene недавно спросил. Я уверен, что Скотт знал это, но он хотел представить построение массива так, чтобы его можно было легко понять.

Dim arr() As Variant, i As Long, nrCol As Long
    nrCol = 12 'the number of columns you need to result
    ReDim arr(1 To nrCol) As Variant
    For i = 1 To nrCol
      arr(i) = Array(i, 2) '2 will be used for `Text` formatting.
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...