Имя: Пароль:
1C
 
1C и Power Point
,
0 KnightAlone
 
28.11.19
16:45
Кто-нибудь делал презентации в Power Point с помощью регл. задания в 1С? Помощь нужна. Я с VBA практически не работал. Нашел я пример обработки на инфостарте, вроде более менее все сделал под себя, осталось 2 непонятки.

1. нужно сделать заливку таблицы прозрачной, в PP руками как это делается нашел, как это сделать кодом?
2. Первую строку в таблице не надо никак выделять. Аналогично первому вопросу - как кодом?

https://docs.microsoft.com/ru-ru/office/vba/api/powerpoint.tablebackground.fill

вот тут пытался прочитать, вроде за фон отвечает Background, за первую строку FirstRow.

код

        Таблица.FirstRow = False;
        Таблица.Background.Fill.Visible = False;

вываливается в ошибку. Причем в методичке FirstRow точно прописан, как булево, про вторую строку не уверен в правильности

Вот рабочий код:


                Рисунок = НовыйСлайд.Shapes.AddPicture(СписокФайлов.Получить(СлучайноеЧисло).Значение, Ложь, Истина, 10, 10, ШиринаСлайда - 20, ВысотаСлайда - 20);
        
        ТекКолСтрок = ?(КоличествоСтрок - ТаблНом*МаксимумСтрокВТаблице < 0, КоличествоСтрок - (ТаблНом-1)*МаксимумСтрокВТаблице,МаксимумСтрокВТаблице);
        ВысотаТаблицы = ТекКолСтрок * 30;
        Таблица = НовыйСлайд.Shapes.AddTable(ТекКолСтрок , КоличествоКолонок, 118, 163, ШиринаСлайда, ВысотаТаблицы);
        //Таблица.FirstRow = False;
        //Таблица.Background.Fill.Visible = False;
        Таблица.Table.Columns(1).Width = 763;
        Таблица.Table.Columns(2).Width = 100;
        
        Для СтрокаНомер = 1 По ТекКолСтрок Цикл
            Таблица.Table.Cell(СтрокаНомер, 1).Shape.TextFrame.TextRange.Text = Строка(Объект.Именинники[НомерСтроки].ФизЛицо);
            Таблица.Table.Cell(СтрокаНомер, 2).Shape.TextFrame.TextRange.Text = Формат(Объект.Именинники[НомерСтроки].ДатаРождения,"ДФ='dd MMMM'");
            НомерСтроки = НомерСтроки + 1;
            Если  НомерСтроки >= КоличествоСтрок Тогда
                Возврат;
            КонецЕсли;
        КонецЦикла;
1 uno-group
 
28.11.19
16:52
сервис-макрос-начать запись. делаемый, что нужно. записуем макрос. Смотришь его код и вытаскиваешь правильный синтаксис.
2 KnightAlone
 
28.11.19
17:09
(1) с этой методой я знаком, в Excel там куски кода таскал из макросов. Вот тока в PP в упор не вижу макросы, меню Сервис вообще не вижу. Ладно, поищу, спасибо за наводку
3 KnightAlone
 
28.11.19
17:11
нашел. у меня это Вид-Макросы
4 KnightAlone
 
28.11.19
17:19
есть создать, есть изменить, есть запуск. но в упор не вижу "начать запись". он мне окрывает окошко VB и предлашает его ручками писать.

office 365

в Excel зашел - там есть Макросы и "начать запись макроса". в PP только Макросы
5 KnightAlone
 
28.11.19
17:32
Таблица.Table.FirstRow = False;

это работает.
остался только первый вопрос - как заливку полупрозрачным сделать. https://docs.microsoft.com/ru-ru/office/vba/api/overview/ тут не вижу про полупрозрачность примеров
6 mikecool
 
28.11.19
17:37
(3) ставь обычный офис, возможно в 365 обрубили запись
7 KnightAlone
 
28.11.19
17:52
(6) хм. так это рабочая машина, какой поставили, такой и стоит )

Таблица.Table.Background.Fill.Transparency = 1;

вот вроде нарыл, но оно не дает ни ошибки, ни результата...
8 uno-group
 
28.11.19
17:58
ИМХО ты фигней занимаешься делается шаблон ручками потом 1с копируется и правится его содержимое.
9 НЕА123
 
28.11.19
18:00
Таблица.Table.Background.Fill.Transparency = 0.5;
10 KnightAlone
 
14.01.20
14:59
(6) 2007 - это последняя версия PP, в которой позволялось вести запись макросов. такую древнюю версию на работе не нашел. сейчас вернулся к этой задачке, там не решенным осталось только сделать прозрачной заливку и невидимыми линии ячеек таблицы. нашел, как обращаться к границам столбца, либо строки (так и не нашел, как можно сразу на всю таблицу сделать настройку)

https://docs.microsoft.com/ru-ru/office/vba/api/powerpoint.cellrange

With ActivePresentation.Slides(2).Shapes(5).Table.Columns(1).Cells

    .Borders(ppBorderRight).DashStyle = msoLineDash

End With

в итоге пробовал все ячейки первого столбца - - играемся с левой границей

Таблица.Table.Columns(1).Cells.Borders(ppBorderLeft).Visible = Ложь; - по идее видимость границ убираем. ноль результата
Таблица.Table.Columns(1).Cells.Borders(ppBorderLeft).Transparency = 1; - прозрачность границы полная. ноль результата
Таблица.Table.Columns(1).Cells.Borders(ppBorderLeft).Weight = 0; - ширину делаем нулевую. ноль результата

пробовал

wdLineStyleNone    = 0;//No border               https://docs.microsoft.com/en-us/office/vba/api/word.wdlinestyle
Таблица.Table.Columns(1).Cells.Borders(ppBorderLeft).Style = wdLineStyleNone;
тоже ничего не меняется.
ни ошибок, ни результата

памагиииитеее )))
11 KnightAlone
 
14.01.20
15:11
вот что миста животворящая делает! сразу нашел в чем проблема

https://docs.microsoft.com/ru-ru/office/vba/api/powerpoint.ppbordertype

вот правильные значения переменных границ. я для левой задавал -2, нашел на каком-то другом сайте, а это походу для Wordа было
12 KnightAlone
 
14.01.20
15:12
границы убиваем вот так.

        Таблица.Table.Columns(1).Cells.Borders(ppBorderRight).Weight = 0;
        Таблица.Table.Columns(1).Cells.Borders(ppBorderLeft).Weight = 0;          
        Таблица.Table.Columns(1).Cells.Borders(ppBorderBottom).Weight = 0;
        Таблица.Table.Columns(1).Cells.Borders(ppBorderTop).Weight = 0;


осталось заливку добить
13 KnightAlone
 
14.01.20
15:23
я в (5) описАлся, там прозрачную заливку надо, а не полупрозрачную
14 dezss
 
14.01.20
15:42
(13) ну 0 попробуй
15 KnightAlone
 
14.01.20
15:48
(14) это я конечно уже пробовал. сейчас вот думаю, надо попробовать играться видимостью фона столбца, может там что выгорит.
16 KnightAlone
 
14.01.20
16:14
https://docs.microsoft.com/ru-ru/office/vba/api/powerpoint.fillformat.background

ActivePresentation.Slides(1).Shapes(1).Fill.Background

В этом примере задается Заливка фигуры на слайде 1 в активной презентации в соответствии с фоном слайда.

По идее мне вот это и надо, но я никак не соображу, как этот кусок в 1с-ке должен выглядеть.
17 KnightAlone
 
14.01.20
16:22
Таблица.Fill.Transparency = 1;

всем спасибо, кто помогал.
особенно (5) (11) (16)
18 Кодер
 
14.01.20
17:29
MAV-у бы это в следующий релиз книжки :)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший