2014-05-15 1 views
1

아래 코드는 Excel에서 지정한 범위를 가져와 범위를 PowerPoint로 가져옵니다. 내 투쟁은 코드에서 각 슬라이드의 슬라이드 제목을 추가하려고하지만 아래 구문이 작동하지 않는다는 것입니다 (Header1 = "test"). 가능하다면 도울 수 있니? 미리 감사드립니다 !!파워 포인트 슬라이드 제목을 추가하는 방법?

Sub export_to_powerpoint() 
Dim PPAPP As PowerPoint.Application 
Dim PPPres As PowerPoint.Presentation 
Dim PPSlide As PowerPoint.Slide 
Dim SlideCount As Integer 
Dim shptbl As Table 
Set PPAPP = New PowerPoint.Application 
Dim cht As Excel.ChartObject 
Dim Header1 As String 

PPAPP.Visible = True 



'create new ppt: 

Set PPPres = PPAPP.Presentations.Add 


For ii = 1 To 10 
PPPres.Slides.Add PPPres.Slides.Count + 1, ppLayoutTitleOnly 



Next ii 

PasteRng PPPres, 1, Range("A2:S24") 
PPSlide.Shapes(1).TextFrame.TextRange.Text = cht.Chart.ChartTitle.Text 

Header1 = "test" 'Titel on the first slide 

PPAPP.ActiveWindow.Selection.ShapeRange.Left = 5 
PPAPP.ActiveWindow.Selection.ShapeRange.Top = 100 

PPAPP.ActiveWindow.Selection.ShapeRange.ScaleHeight 0.8, msoTrue 
PPAPP.ActiveWindow.Selection.ShapeRange.ScaleWidth 0.7, msoTrue 

PPAPP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True 
PPAPP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True 




PasteRng PPPres, 2, Range("A25:S47") 

PPAPP.ActiveWindow.Selection.ShapeRange.Left = 5 
PPAPP.ActiveWindow.Selection.ShapeRange.Top = 100 

PPAPP.ActiveWindow.Selection.ShapeRange.ScaleHeight 0.8, msoTrue 
PPAPP.ActiveWindow.Selection.ShapeRange.ScaleWidth 0.7, msoTrue 

PPAPP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True 
PPAPP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True 

PasteRng PPPres, 3, Range("v2:am24") 

'Adjust the positioning of the Chart on Powerpoint Slide 
PPAPP.ActiveWindow.Selection.ShapeRange.Left = 5 
PPAPP.ActiveWindow.Selection.ShapeRange.Top = 100 

PPAPP.ActiveWindow.Selection.ShapeRange.ScaleHeight 0.8, msoTrue 
PPAPP.ActiveWindow.Selection.ShapeRange.ScaleWidth 0.7, msoTrue 

PPAPP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True 
PPAPP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True 




Set PPSlide = Nothing 
Set PPPres = Nothing 
Set PPAPP = Nothing 
End Sub 

Sub PasteRng(Pres, SlideNo, Rng As Range) 
Rng.Copy ' copy the range 
Pres.Application.ActiveWindow.View.GotoSlide SlideNo 'PPSlide.SlideIndex ' activate the slide no 
Pres.Application.ActiveWindow.View.PasteSpecial ppPasteOLEObject, msoFalse ' paste using pastespecial method 
End Sub 
+0

에 오신 것을 환영합니다 SO에 있습니다. 작동하지 않는 것에 대해 더 잘 설명 할 수 있습니까? 오류가 발생 했습니까, 아니면 PP 객체에 설정되어 있지 않습니까? – Rikon

답변

0

코드가 작동합니다. 당신이

Dim Header1 as String

당신은 문자열 데이터를 보유 할 수있는 문자열 변수를 만들 때, (당신이 ... 예상과 다를 수 있음) 할을 요청 정확히 뭐하는거야.

그런 다음 당신은 할당 :

Header1 = "test" 'Titel on the first slide

은 어디에도 코드에 당신도 슬라이드의 제목에 쓸 문자열을 사용하려고 없다. 이것을 슬라이드의 제목 객체에 지정해야합니다.

Header1 = "test" 

Dim sldTitle as Object 
If Not ppSlide.Shapes.HasTitle Then 

    'If there is no title object then assume the slideLayout does not permit one 
    ' so do nothing. 
Else: 
    Set myTitle = ppSlide.Shapes.Title 
    'Assign the title text: 
    myTitle.TextFrame.TextRange.Characters.Text = Header1 
End If 

이 당신을 위해 유용하게됩니다

http://msdn.microsoft.com/en-us/library/office/ff743835(v=office.14).aspx

+1

안녕하세요, 정보 주셔서 감사합니다. 이것에 새로운 종류의 그래서 나와 곰. 내가 제공 한 코드를 사용했지만 "개체 변수 또는 블록 변수가 설정되지 않았습니다"라는 오류가 발생합니다.이 코드는 강조 표시되어 있습니다 (Not PPSlide.Shapes.HasTitle Then). 나는이 오류가 코드의 일부가 존재하지 않고 무엇을 추가해야하는지 확신하지 못한다고 생각한다. – user3642399

+0

질문 (위)의 코드를 업데이트하여 현재 사용중인 코드를 표시하십시오. 당신은'PPSlide As PowerPoint.Slide'라는 객체 변수를 가지고 있습니다. 이 코드를 사용하기 전에 이미 해당 변수에 슬라이드를 할당했다고 가정합니다. 하지만 이제 코드를 자세히 보았으므로 변수를 할당하지 않았습니다 (이 줄'PPSlide.Shapes (1) .TextFrame.TextRange.Text = ... '도 오류가 발생해야합니다). –

+0

감사합니다. 일할 코드를 얻었습니다. 도움을 요청하십시오 !!!!! – user3642399