Добрый вечер, уважаемые форумчане! Пишу макрос копирования текста из Excel в таблицу в Powerpoint. Алгоритм такой: 1. Открывается файл-эксель, выбранный пользователем 2. Копируется определенный диапазон 3. Вставляется в таблицу на слайде1 в Powerpoint
Не могу справиться с последним пунктом. Данные вставляются как картинка, как таблица, но не как ТЕКСТ.
Ожидаемый результат выполнения макроса на слайде2. Во вложении файл Powerpoint с макросом и файл-Excel с данными для копирования.
Т.к. макрос еще очень сырой, возможно придется вручную подключить библиотеку Microsoft Excel перед запуском: Tools->References->Microsoft Excel Object Library. За ранее прошу прощения за неудобства.
Буду очень благодарна за любую помощь!
Добрый вечер, уважаемые форумчане! Пишу макрос копирования текста из Excel в таблицу в Powerpoint. Алгоритм такой: 1. Открывается файл-эксель, выбранный пользователем 2. Копируется определенный диапазон 3. Вставляется в таблицу на слайде1 в Powerpoint
Не могу справиться с последним пунктом. Данные вставляются как картинка, как таблица, но не как ТЕКСТ.
Ожидаемый результат выполнения макроса на слайде2. Во вложении файл Powerpoint с макросом и файл-Excel с данными для копирования.
Т.к. макрос еще очень сырой, возможно придется вручную подключить библиотеку Microsoft Excel перед запуском: Tools->References->Microsoft Excel Object Library. За ранее прошу прощения за неудобства.
Пишу макрос копирования текста из Excel в таблицу в Powerpoint.
Есть готовая таблица, а вы из неё текст вставляете в таблицу PP - в чем резон?! Не проще ее и использовать, но, если очень хоцца, то разукрасить в PP... ps Добавил файлы. без макроса.
Пишу макрос копирования текста из Excel в таблицу в Powerpoint.
Есть готовая таблица, а вы из неё текст вставляете в таблицу PP - в чем резон?! Не проще ее и использовать, но, если очень хоцца, то разукрасить в PP... ps Добавил файлы. без макроса.TimSha
TimSha, спасибо за предложение, но дело в том, что таких слайдов будет много, для каждого своя таблица со своим дизайном (размер шрифта, цвет, заливка). Более того, таких шаблонов РР будет тоже много, и могут появляться новые, дизайн которых за ранее неизвестен.
Есть проекты, которые повторяются каждый год, соответственно, чтобы вручную не подгонять дизайн, берется старая презентация (допустим за прошлый год) и туда вставляются новые значения. Меня попросили как-то автоматизировать весь процесс, т к есть РР с количеством слайдов больше 100, и замена всех данных вручную занимает много времени.
Каких-то альтернативных решения проблемы, кроме вставки самой таблицы нет? Может что-то почитать предложите?
TimSha, спасибо за предложение, но дело в том, что таких слайдов будет много, для каждого своя таблица со своим дизайном (размер шрифта, цвет, заливка). Более того, таких шаблонов РР будет тоже много, и могут появляться новые, дизайн которых за ранее неизвестен.
Есть проекты, которые повторяются каждый год, соответственно, чтобы вручную не подгонять дизайн, берется старая презентация (допустим за прошлый год) и туда вставляются новые значения. Меня попросили как-то автоматизировать весь процесс, т к есть РР с количеством слайдов больше 100, и замена всех данных вручную занимает много времени.
Каких-то альтернативных решения проблемы, кроме вставки самой таблицы нет? Может что-то почитать предложите?Manyasha
для каждого своя таблица со своим дизайном (размер шрифта, цвет, заливка).
Что то у вас в коде не видно, каким образом сопоставляются данные таблицы на рабочем листе Excel и таблицы на слайде. Разве что, подписи на рабочем листе дают наводку, но в коде происходит только перебор. Следующее - необходимо учитывать, что есть объединённые ячейки, поэтому нужно для объединённых ячеек брать значения таблицы только для левой верней ячейки объединения. В общем случае, при отсутствии объединения (код не проверял) будет что-то подобное - запись значения ячейки таблицы Excel в ячейку таблицы слайда [vba]
Код
'Если фигура является таблицей If iSlide.Shapes(i).HasTable = msoTrue Then '!!!!!!!!Вставить в таблицу значения из буфера обмена!!!!!!!!!!! Dim pTable As Table, iRow As Long, iCol As Long Dim vData As Variant Set pTable = iSlide.Shapes(i).Table vData = workB.sheets(1).Range("B2:F9").Value For iRow = 1 To UBound(vData) For iCol = 1 To UBound(vData, 2) pTable.Cell(iRow, iCol).Shape.TextFrame.TextRange.Text = vData(iRow, iCol) Next Next 'iSlide.Shapes.PasteSpecial ppPasteOLEObject Exit For End If
[/vba]
Доброе время суток
Цитата
для каждого своя таблица со своим дизайном (размер шрифта, цвет, заливка).
Что то у вас в коде не видно, каким образом сопоставляются данные таблицы на рабочем листе Excel и таблицы на слайде. Разве что, подписи на рабочем листе дают наводку, но в коде происходит только перебор. Следующее - необходимо учитывать, что есть объединённые ячейки, поэтому нужно для объединённых ячеек брать значения таблицы только для левой верней ячейки объединения. В общем случае, при отсутствии объединения (код не проверял) будет что-то подобное - запись значения ячейки таблицы Excel в ячейку таблицы слайда [vba]
Код
'Если фигура является таблицей If iSlide.Shapes(i).HasTable = msoTrue Then '!!!!!!!!Вставить в таблицу значения из буфера обмена!!!!!!!!!!! Dim pTable As Table, iRow As Long, iCol As Long Dim vData As Variant Set pTable = iSlide.Shapes(i).Table vData = workB.sheets(1).Range("B2:F9").Value For iRow = 1 To UBound(vData) For iCol = 1 To UBound(vData, 2) pTable.Cell(iRow, iCol).Shape.TextFrame.TextRange.Text = vData(iRow, iCol) Next Next 'iSlide.Shapes.PasteSpecial ppPasteOLEObject Exit For End If