2015-09-28 2 views
0

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

Для этого я определил имя формы соответствующих текстовых полей, которые я хочу обновить в PowerPoint, выделив конкретное текстовое поле и используя Format -> Align. Затем я создал 3 колонки в Excel со значениями:

Slide index Shape name    Value 
1   Title 2     =CONCATENATE("REPORT ";YEAR(TODAY())) 
1   Placeholder for date1 =TODAY() 

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

Sub writedata() 
Dim c As Object 
Dim shapeslide 
Dim shapename 
Dim shapetext 

Set ppapp = GetObject(, "Powerpoint.application") 
Set pppres = ppapp.ActivePresentation 

For Each c In Blad2.Range("a2:a" & Blad2.Range("a" & Rows.Count).End(xlUp).Row) 
shapeslide = Blad2.Range("a" & c.Row) 
shapename = Blad2.Range("b" & c.Row) 
shapetext = Blad2.Range("c" & c.Row).Text 
pppres.Slides(shapeslide).Shapes(shapename).TextEffect.Text = shapetext 
Next 

End Sub 

Моя проблема заключается что Slide 1 не будет обновляться вообще в его соответствующих Shape name. Единственное действие, которое происходит при выполнении этого макроса, состоит в том, что по какой-то причине Slide 3 имеет свой размер размером, измененный, чтобы стать размером 35 вместо размера 16. Я не понимаю, почему это происходит. Имя формы формы, размер шрифта которой изменен, не записывается в книгу Excel и не является тем же именем, что и одно из двух написанных в Excel.

Надеюсь, кто-то может пролить свет на это.

+0

Не может быть вашей проблемой, поскольку вы можете использовать фигуры, а не текстовые поля. Но пытались ли вы писать данные в текстовое поле, которое вы хотите использовать: .TextFrame.TextRange = "ТЕКСТ ДЛЯ НАСЕЛЕНИЯ/ПЕРЕМЕННОГО" – iamstrained

ответ

2

Позволяет получать слайды и фигуры, перечисленные в Excel, чтобы гарантировать, что они являются тем, что вы ожидаете. Иногда их действительно странно называют/IDed. Поскольку у вас есть слайды, которые не меняются, это должно и слайды меняются, что не должно ... нам определенно нужно их удвоить. Это будет проходить через каждый слайд и каждую фигуру на этом слайде и отображать идентификатор и имя слайда, а также каждый идентификатор и имя формы. У меня есть презентация, и первый слайд слайд 297 по какой-то причине. Затем слайд 250 второй. Слайд 50 - третий. Остальные тоже сочтены странно. o.O

Включите окно ваших непосредственных действий, чтобы увидеть отладочный текст.

Sub SlidesShapes() 
Dim i As Integer, j As Integer 

Set ppapp = GetObject(, "PowerPoint.Application") 
Set ppres = ppapp.ActivePresentation 

For i = 1 To ppres.Slides.Count'slides and shapes start counting at 1 not 0 
    Debug.Print ppres.Slides(i).SlideID 
    Debug.Print ppres.Slides(i).Name 
    For j = 1 To ppres.Slides(i).Shapes.Count 
     Debug.Print ppres.Slides(i).Shapes(j).ID 
     Debug.Print ppres.Slides(i).Shapes(j).Name 
    Next 
Next 

End Sub 

Кроме того, когда вы шагаете через исходный код (это не сниппеты), что вы видите в окне местных жителей на каждый шаг? Что-нибудь странное происходит там, что выпрыгивает на вас? Любые переменные, населенные чем-то неожиданным или не совсем правильным?

Смежные вопросы