Excel 문서의 데이터를 사용하여 Excel VBA에서 PowerPoint를 만드는 코드를 작성하고 있습니다. 이 문서에서는 IMG라는 시트가 있는데 여기에는 "그림 X"라는 일련의 이미지가 있으며 X는 현재 그림의 번호입니다. 이 그림을 복사하여 각각의 PowerPoint 슬라이드에 붙여 넣기위한 코드는 .Select 메서드를 사용합니다.이 메서드는 내가 읽은 바에 따르면 코드가 느리게 실행되며 피할 수 있어야합니다. ".Select"방법을 사용하지 않고도 엑셀 시트의 이미지를 붙여 넣을 수 있는지 알고 싶습니다..Select 메서드를 사용하지 않고 Excel에서 PowerPoint VBA로 이미지를 붙여 넣는 방법
내가 사용하고있는 코드는 다음과 같습니다
Dim pptSlide As PowerPoint.Slide
Sheets("IMG").Select
ActiveSheet.Shapes.Range(Array("Picture 1")).Select
Selection.Copy
pptSlide.Shapes.PasteSpecial(ppPasteMetafilePicture).Select
pptSlide.Shapes(4).Width = 121
pptSlide.Shapes(4).Height = 51
pptSlide.Shapes(4).Left = 580
pptSlide.Shapes(4).Top = 3
감사 나머지 내 코드의
: "선택"오브젝트를 피하는Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim pptShape As PowerPoint.Shape
Dim excelTable As Excel.Range
Dim SlideTitle As String
Dim SlideText As String
Dim SlideObject As Object
Dim pptTextbox As PowerPoint.Shape
Dim SlideNumber As String
Dim myPic As Object
On Error Resume Next
Set pptApp = New PowerPoint.Application
Set pptPres = pptApp.Presentations.Add
pptPres.PageSetup.SlideSize = ppSlideSizeOnScreen
pptPres.ApplyTemplate "c:\Program Files\Microsoft Office\Templates\1033\Blank.potx"
pptPres.PageSetup.FirstSlideNumber = 0
''Consolidados
Set excelTable1 = Worksheets("TDCSD").Range("N280:U287")
Set excelTable2 = Worksheets("TDEXITO").Range("N48:U55")
Set excelTable3 = Worksheets("TDGPA").Range("N81:U88")
Set excelTable4 = Worksheets("TDSACI").Range("N234:U241")
Set excelTable5 = Worksheets("TDSMU").Range("N47:U54")
Set excelTable6 = Worksheets("TDRPLY").Range("N76:U83")
Set excelTable7 = Worksheets("TDInR").Range("N44:U51")
Set excelTable8 = Worksheets("TDPA").Range("N59:U66")
Set excelTable9 = Worksheets("TDIRSA").Range("N31:U38")
Set excelTable10 = Worksheets("TCOM").Range("Q8:AC17")
Set excelTable11 = Worksheets("TCOM").Range("Q24:AC33")
'SLIDES
'Slide 0
Set pptSlide = pptPres.Slides.Add(1, ppLayoutTitle)
SlideTitle = ThisWorkbook.Sheets("PPT").Range("F7").Value
pptSlide.Shapes(1).TextFrame.TextRange.Text = SlideTitle
pptSlide.Shapes.Title.TextFrame.TextRange.Characters(Start:=36, Length:=65).Font.Size = 20
pptSlide.Shapes.Title.Width = 610
pptSlide.Shapes(2).TextFrame.TextRange.Text = ThisWorkbook.Sheets("PPT").Range("B7").Value
'Agregar el número de diapositiva en la esquina derecha:
Set pptTextbox = pptSlide.Shapes.AddTextbox(_
msoTextOrientationHorizontal, 686, 510, 34, 29)
With pptTextbox.TextFrame
.TextRange.InsertSlideNumber
.TextRange.Font.Size = 8
.TextRange.Font.Name = "Tahoma"
.TextRange.Font.Color = RGB(137, 137, 137)
.VerticalAnchor = msoAnchorMiddle
End With
'Slide 1:
Set pptSlide = pptPres.Slides.Add(2, ppLayoutCustom)
SlideTitle = "Introducción"
pptSlide.Shapes.Title.TextFrame.TextRange.Text = SlideTitle
pptSlide.Shapes.Title.TextFrame.TextRange.Font.Size = 22
Set pptTextbox = pptSlide.Shapes(1)
pptTextbox.TextFrame.TextRange.Text = ThisWorkbook.Sheets("PPT").Range("B11").Value
pptTextbox.Top = 88
pptTextbox.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = ppAlignJustify
'Agregar el número de diapositiva:
Set pptTextbox = pptSlide.Shapes.AddTextbox(_
msoTextOrientationHorizontal, 686, 510, 34, 29)
With pptTextbox.TextFrame
.TextRange.InsertSlideNumber
.TextRange.Font.Size = 8
.TextRange.Font.Name = "Tahoma"
.TextRange.Font.Color = RGB(137, 137, 137)
.VerticalAnchor = msoAnchorMiddle
End With
'Slide 2:
Set pptSlide = pptPres.Slides.Add(3, ppLayoutTitleOnly)
SlideTitle = "Agenda"
pptSlide.Shapes.Title.TextFrame.TextRange.Text = SlideTitle
pptSlide.Shapes.Title.TextFrame.TextRange.Font.Size = 22
Set pptTextbox = pptSlide.Shapes.AddTextbox(_
msoTextOrientationHorizontal, 686, 510, 34, 29)
With pptTextbox.TextFrame
.TextRange.InsertSlideNumber
.TextRange.Font.Size = 8
.TextRange.Font.Name = "Tahoma"
.TextRange.Font.Color = RGB(137, 137, 137)
.VerticalAnchor = msoAnchorMiddle
End With
'Slide 3:
''Crear Slide y añadir título
Set pptSlide = pptPres.Slides.Add(4, ppLayoutCustom)
SlideTitle = "Noticias Relevantes"
pptSlide.Shapes.Title.TextFrame.TextRange.Text = SlideTitle
pptSlide.Shapes.Title.TextFrame.TextRange.Font.Size = 22
''Insertar el texto desde Excel
Set pptTextbox = pptSlide.Shapes(1)
pptTextbox.TextFrame.TextRange.Text = ThisWorkbook.Sheets("PPT").Range("B24").Value
pptTextbox.Top = 68.8
pptTextbox.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = ppAlignJustify
''Añadir número de Slide
Set pptTextbox = pptSlide.Shapes.AddTextbox(_
msoTextOrientationHorizontal, 686, 510, 34, 29)
With pptTextbox.TextFrame
.TextRange.InsertSlideNumber
.TextRange.Font.Size = 8
.TextRange.Font.Name = "Tahoma"
.TextRange.Font.Color = RGB(137, 137, 137)
.VerticalAnchor = msoAnchorMiddle
End With
'Añadir imagenes
'Falabella
Sheets("IMG").Shapes("Picture 1").Copy
pptSlide.Shapes.PasteSpecial(ppPasteMetafilePicture).Select
pptSlide.Shapes(4).Width = 121
pptSlide.Shapes(4).Height = 51
pptSlide.Shapes(4).Left = 579.4
pptSlide.Shapes(4).Top = 3.4
'Slide 4:
''Crear Slide y añadir el título
Set pptSlide = pptPres.Slides.Add(5, ppLayoutCustom)
SlideTitle = "Noticias Relevantes"
pptSlide.Shapes.Title.TextFrame.TextRange.Text = SlideTitle
pptSlide.Shapes.Title.TextFrame.TextRange.Font.Size = 22
''Añadir texto
Set pptTextbox = pptSlide.Shapes(1)
pptTextbox.TextFrame.TextRange.Text = ThisWorkbook.Sheets("PPT").Range("B49").Value
pptTextbox.Top = 77
pptTextbox.TextFrame.TextRange.Paragraphs.ParagraphFormat.Alignment = ppAlignJustify
''Añadir número de Slide
Set pptTextbox = pptSlide.Shapes.AddTextbox(_
msoTextOrientationHorizontal, 686, 510, 34, 29)
With pptTextbox.TextFrame
.TextRange.InsertSlideNumber
.TextRange.Font.Size = 8
.TextRange.Font.Name = "Tahoma"
.TextRange.Font.Color = RGB(137, 137, 137)
.VerticalAnchor = msoAnchorMiddle
End With
''Añadir imagenes
'Grupo Éxito
Sheets("IMG").Shapes("Picture 2").Copy
pptSlide.Shapes.PasteSpecial (ppPasteMetafilePicture)
pptSlide.Shapes(4).Width = 108
pptSlide.Shapes(4).Height = 65
pptSlide.Shapes(4).Left = 592
pptSlide.Shapes(4).Top = 1.42
감사합니다. 도움이되었다. 그러나 단 한 가지는 위치 지정 기능이 "With"기능과 함께 작동하지 않는다는 것입니다. 왜 – thePB
당신은 내 전체 코드를 복사하고 위치가 작동하지 않습니다 모르겠어요? 오류가 있습니까? 아니면 다시 위치하지 않는거야? –
아니요, 내 코드의 이미지 (긴 코드이고 여기에 영향을 줄 수있는 다른 요소가 있음)에 대한 코드를 복사했습니다. 그것은 나에게 오류를주지 못했지만 ppt를 열었을 때 이미지가 배치되지 않았습니다 – thePB