Как зациклить для каждой таблицы в одном листе VBA - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь сгенерировать списки таблицы и столбца в текстовый файл из файла Excel.мой код просто генерировать для всех столбцов до конца строки, потому что я понятия не имею, как определить переменную для ограничения цикла каждой таблицы:

здесь код и данные Excel изображение Excel данные

Dim field As String
Dim table As String
Dim t As Integer
Dim f As Integer
Dim lastrow As Integer
Dim myFile As String
Dim xStr As String

myFile = "D:\table.txt"

With Sheets("Sheet1")
    Open myFile For Output As #1

    table = """table_name"": """ & .Range("I2") & ""","
    Print #1, table

    lastrow = Range("A" & Rows.Count).End(xlUp).Row

    For f = 2 To lastrow
        field = """column_name"": [" & Chr(10) & """" & .Range("B" & f) & """" & Chr(10) & _
        "],"
        Print #1, field
    Next f

    Close #1


End With

Я представляю код, подобный приведенному ниже (CMIIW - логика), но как записать это на vba:

for t = 1 to "count table on sheet (i dnt know how to define this value)"
  table = "tablename"
  Print #1, table

  for f = "first row table t + 1" to lastrow table t
    field= "fieldname"
    Print #1, field
  Next f
Next t

Основываясь на ответе пользователя11246173, я знаю, как выполнить цикл в качестве числа таблиц, но я все еще не могу получить диапазон каждой конкретной ячейки, как мой код выше.Пожалуйста, помогите решить мой код.

Кто-нибудь может помочь мне с этим?

1 Ответ

0 голосов
/ 23 марта 2019

В VBA таблицы рабочих таблиц называются ListObjects. Они представляют собой коллекцию, которая принадлежит родительскому рабочему листу и (среди прочих свойств) имеют счетчик и индекс, как и большинство других объектов коллекции. Каждый ListObject имеет несколько ListColumns.

Option Explicit

Sub loopLO()

    Dim i As Long, c As Long

    With Worksheets("sheet1")
        For i = 1 To .ListObjects.Count
            Debug.Print .ListObjects(i).Name
            For c = 1 To .ListObjects(i).ListColumns.Count
                Debug.Print .ListObjects(i).ListColumns(c)
            Next c
        Next i
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...