2014-10-31 3 views
0

Windows 용 PowerPoint 2007에서는 두 가지 작업 중 하나를 수행하고 싶습니다.vba를 사용하여 PowerPoint 2007의 슬라이드에 이미지 배치

첫 번째는 이미지에 붙여 넣을 기본 위치를 변경하는 것입니다. SAS로 만든 그래프에 붙여 넣을 때 왼쪽 상단에 붙여 넣습니다. 이상적으로는 기본 붙여 넣기 위치를 변경하고 싶습니다. 이 간단한 옵션이없는 것 같지만 VBA로 가능할 수도 있습니다.

가능하지 않다면 VBA 매크로를 작성하여 각 슬라이드를 단계별로 이동하고 이미지 위치를 변경하십시오.

내가이 다른 사이트 덕분에 일할 수있는 슬라이드 루프를 얻었다합니다 (있는 MsgBox는 테스트입니다) : 그 너머

Sub SlideLoop() 
    Dim osld As Slide 

    For Each osld In ActivePresentation.Slides 
     osld.Select 
     MsgBox "The slide index of the current slide is: " & _ 
      ActiveWindow.View.Slide.SlideIndex 
    Next osld 

End Sub 

, 나는 많은 행운이 없었어요. 나는 슬라이드와 작물에 모든 이미지를 선택하거나 크기를 조정할 코드 조각을 보았다, 나는 이미지의 위치를 ​​의미 excelhelphq.com에이 비트를 발견

With ActiveWindow.Selection.ShapeRange 
    .Left = 50 'change the number for desired x position 
    .Top = 50 'change the number for desired y position 
End With 

을하지만 방법을 잘 모르겠어요 이를 루프에 통합하면 Powerpoint VBA의 온라인 문서가 특히 강력하지 않습니다. 일부 코드는 ShapeIndex를 다루지 만, 어떻게 작동하는지 잘 모르겠습니다.

이미지가있을 때 슬라이드에 이미지가 하나만 있음을 언급해야합니다 (일부 슬라이드는 전혀 이미지가 없습니다).

이것은 처음에는 수동으로 PowerPoint에 붙여 넣기는하지만 시간 절약적인 방법으로 생각됩니다.

감사합니다. 나는이 정확한 질문을 다루는 것을 찾을 수 없었다.

PPT를위한 VBA가 단계적으로 제거 되었습니까? 마이크로 소프트는 사람들이 자신의 비표준 온라인 문서를 기반으로 어떻게 사용 하는지를 알기를 원하지 않는다고 느낀다.

답변

2

MS는 언제든지 VBA를 단계적으로 단계적으로 종료하지 않을 것입니다. 너무 많은 대기업 고객이 원하는 경우 로스팅합니다. 모두 똑같이, 당신 말이 맞아요, 문서가 나쁘고 매번 출시 될 때마다 점점 더 나빠집니다.

이 같은 장소를 더욱 가치있게 만듭니다. 그래서, 먼저 기본 루프 조금 정리 :

Sub SlideLoop() 
    Dim osld As Slide 
    Dim oSh As Shape 

    For Each osld In ActivePresentation.Slides 
     ' check each shape on the slide 
     ' is it an image or whatever you're looking for? 
     For Each oSh In osld.Shapes 
      With oSh 
       If .Type = msoLinkedPicture _ 
       Or .Type = msoPicture Then 

       ' position it to taste 
       .Left = 100 
       .Top = 100 

       ' centering/resizing gets trickier 
       ' but is still possible. 
       ' Exercise for the reader? 
       ' Hint: 
       ' ActivePresentation.PageSetup.SlideWidth and .SlideHeight 
       ' tells you the width and height of the slide 
       ' 
       ' All values are in Points (72 to the inch) 

       End If 
      End With 
     Next ' Shape 
    Next osld ' Slide 

End Sub 
+0

정말 고마워요 스티브 :

Sub SlideLoop() Dim osld As Slide For Each osld In ActivePresentation.Slides ' osld.Select No need to select a slide before acting on it 'MsgBox "The slide index of the current slide is: " & _ ' ActiveWindow.View.Slide.SlideIndex MsgBox "The slide index of the current slide is: " & cstr(osld.SlideIndex) Next osld End Sub 

는 그래서 여기에 후있어 무엇을 수행하는 방법에 시작입니다! 나는 단순함을 위해 LinkedPicture 검사를 꺼 냈지만 그렇지 않으면 완벽하게 작동했습니다. – jedmatic