[ID CC-CC2021] Перебор информации в выбранной группе

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
myInDesign.ActiveDocument.TextFrames(1).Tables.Length не работает?
 

ReallyCool

Участник
Топикстартер
Сообщения
55
Реакции
1
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).RowCount - ашыпка
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).Length - ашыпка
myInDesign.ActiveDocument.TextFrames(1).Tables.RowCount - ашыпка
myInDesign.ActiveDocument.TextFrames(1).Tables.Length - ашыпка
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Тогда
myInDesign.ActiveDocument.TextFrames(1).Tables.Count ?
или UBound(myInDesign.ActiveDocument.TextFrames(1).Tables) ?
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Размер — понятие растяжимое. Это и высота всей таблицы, и количество строк (если речь о вертикали). И то, и другое можно получить:
Код:
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).Height
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).Rows.Count
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).Rows.Item(1).Cells.Count
 
  • Спасибо
Реакции: ReallyCool

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Вот полный код, демонстрирующий доступ к ячейкам Вашей таблицы:
Код:
Set myInDesign = CreateObject("InDesign.Application")
Set myDoc = myInDesign.ActiveDocument
Set myTF = myDoc.TextFrames.item(1)
Set myTab = myTF.Tables.item(1)
curArticle = myTab.Rows.item(2).Cells.Item(2).Texts.Item(1).Contents
curSource = myTab.Rows.item(2).Cells.Item(8).Texts.Item(1).Contents
MsgBox("Артикул: "+curArticle+"; Светлый Источник: "+curSource)
 
  • Спасибо
Реакции: ReallyCool

ReallyCool

Участник
Топикстартер
Сообщения
55
Реакции
1
Eugenyus, низкий поклон за прорыв в хитросплетении точек и методов!
это именно то, что нужно:
Код:
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).Height
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).Rows.Count ' количество строк
myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1).Rows.Item(1).Cells.Count ' количество столбцов

единственно, .Height - это высота чего?
 

ReallyCool

Участник
Топикстартер
Сообщения
55
Реакции
1
Количество ячеек в текущей строке, а не столбцов.
ну для текущей таблицы приемлемо это понимать как кол-во столбцов.
Спасибо за Ваши ответы, теперь я знаю все что мне нужно на текущий момент, ушел кодить дальше ))
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Перебираем ячейки всех таблиц на странице
Код:
Sub ttt()
  Dim indd As New InDesign.Application
  Dim t As InDesign.Table
  Dim c As InDesign.Cell

  For Each tf In indd.ActiveWindow.ActivePage.TextFrames
    For Each t In tf.Tables
      For Each c In t.Cells
        Debug.Print c.Contents
      Next c
    Next t
  Next tf
End Sub
 
  • Спасибо
Реакции: Ksenia и ReallyCool

ReallyCool

Участник
Топикстартер
Сообщения
55
Реакции
1
Лев, спасибо.
но вот возник дополнительный вопрос - в одной из ячеек этой таблицы стоят небольшие изображения с графическими символами:
граф.символы.JPG


с помощью каких методов узнать что там изображения стоят, очистить/добавить изображения в выбранную ячейку?
типа такого:
cellImage = myFrame.Tables.Item(1).Rows(2).Cells(9). ?? .GetImageContent(1) ???
 

Вложения

  • граф.символы.JPG
    граф.символы.JPG
    21.7 КБ · Просм.: 213

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Технически, в ячейку вставлены не изображения. В ячейку вставлены контейнеры — фреймы, в которые вставлены изображения. Как вариант, до них можно добраться вот по такой цепочке:
Screenshot_6.jpg
 
  • Спасибо
Реакции: ReallyCool

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Печатаем адреса линкованной графики из ячеек
Код:
      For Each c In t.Cells
        For Each g In c.AllGraphics
          Debug.Print g.ItemLink.FilePath
        Next g
      Next c
 
  • Спасибо
Реакции: Ksenia и ReallyCool

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
вот только в вашем файле графика не помещена в таблицу, а просто болтается на странице сама по себе
 

Вложения

  • Screenshot 2020-01-21 18.50.22.png
    Screenshot 2020-01-21 18.50.22.png
    30.9 КБ · Просм.: 217
  • Спасибо
Реакции: ReallyCool

ReallyCool

Участник
Топикстартер
Сообщения
55
Реакции
1
адреса линкованной графики из ячеек
сенкса, поэксперементирую

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

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
А так втыкаем в хвост ячейки №18 три картинки без замены текущего содержимого
Код:
...
    For Each t In tf.Tables
      t.Cells(18).Texts(1).InsertionPoints(-1).Place "c:\1.gif"
      t.Cells(18).Texts(1).InsertionPoints(-1).Place "c:\2.gif"
      t.Cells(18).Texts(1).InsertionPoints(-1).Place "c:\3.gif"
 
  • Спасибо
Реакции: Ksenia и ReallyCool

ReallyCool

Участник
Топикстартер
Сообщения
55
Реакции
1
а как понять, есть что-то в ячейке из графики или еще чего? каким методом?
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
а как понять, есть что-то в ячейке из графики или еще чего? каким методом?
Например, так:
Код:
      For Each c In t.Cells
        Debug.Print c.AllGraphics.Count
Забыл воткнуть в пример альтернативный вариант с убийством содержимого ячейки:
Код:
t.Cells(18).Texts(1).Place "c:\1.gif"
 
  • Спасибо
Реакции: Ksenia и ReallyCool

ReallyCool

Участник
Топикстартер
Сообщения
55
Реакции
1
на а переменная t это таблица из фрейма:
Код:
t = myInDesign.ActiveDocument.TextFrames(1).Tables.Item(1)
??