Domanda

Ho creato del codice in Excel VBA per creare una presentazione di PowerPoint 1 diapositiva per ogni riga di Excel e inserirla in una casella di testo specifica in PowerPoint.
Ora voglio aggiungere tutte le immagini che corrispondono alla descrizione.Questi sono tutti Jpeg e non grafici ecc.
Come posso farlo, ed è meglio farlo in Excel o è meglio farlo da solo in Powerpoint VBA?
Ad ogni modo, qualcuno sarebbe in grado di aiutarmi con qualche codice su come farlo, per favore?
Le cornici delle immagini esistono già in PowerPoint.Ci sono 2 immagini per diapositiva (nessuna transizione o altro).
Grazie!

P.S Sto utilizzando PowerPoint ed Excel 2010 su Windows 7.


C'è un modo per farlo da Excel?Il resto del mio codice è in Excel e sarebbe fantastico farlo come parte della Macro.
Fondamentalmente ho un percorso di file che voglio utilizzare, ad es.C: omecartella omeimmagine.jpeg viene visualizzato nella colonna H del foglio di calcolo (circa 400 righe).
Il modello Powepoint che sto utilizzando ha la cornice dell'immagine (quella in Powerpoint, su cui passi il mouse sopra dice...."Inserisci immagine dal file".
Questi sono già dimensionati e si trovano nella posizione giusta.
Quello che voglio fare è, in Excel, incollare l'immagine dal percorso del file che si trova in Excel e incollarla in quello specifico fotogramma immagine.
Sarà possibile?

Fondamentalmente qualcosa che farà questo:
PPT.ActivePresentation.Slides(2).Shapes(3)LoadImage(spath)

Di seguito è riportato il codice che sto utilizzando.
**** Indica il percorso del file.il file jpg è impostato come terza colonna nel foglio di calcolo Excel.

Sub CreateSlides()
'Dim the Excel objects
Dim objWorkbook As New Excel.Workbook
Dim objWorksheet As Excel.Worksheet

'Dim the File Path String
Dim strFilePath As String

'Dim the PowerPoint objects
Dim PPT As Object
Dim pptSlide As PowerPoint.Slide
Dim pptLayout As PowerPoint.CustomLayout
Dim pptNewSlide As PowerPoint.Slide
Dim str As String
Dim Title As String

Set PPT = GetObject(, "PowerPoint.Application")

PPT.Visible = True

'Get the layout of the first slide and set a CustomLayout object
Set pptLayout = PPT.ActivePresentation.Slides(1).CustomLayout

'Run the OpenFile function to get an Open File dialog box. It returns a String containing the file and path.
strFilePath = OpenFile()

'Open the Excel file
Set objWorkbook = Excel.Application.Workbooks.Open(strFilePath)

'Grab the first Worksheet in the Workbook
Set objWorksheet = objWorkbook.Worksheets(1)

'Loop through each used row in Column A
For i = 2 To objWorksheet.Range("A65536").End(xlUp).Row

Set PPT = GetObject(, "PowerPoint.Application")

Set pptNewSlide = PPT.ActivePresentation.Slides.AddSlide(PPT.ActivePresentation.Slides.Count + 1, pptLayout)

 'Get the number of columns in use on the current row
    Dim LastCol As Long
    Dim boldWords As String

    boldWords = "Line1: ,line2: ,Line3: ,Line4: "
    LastCol = objWorksheet.Rows(i).End(xlToRight).Column
    If LastCol = 16384 Then LastCol = 1 'For some reason if only column 1 has data it returns 16384, so correct it

    'Build a string of all the columns on the row
    str = ""
    str = "Line1: " & str & objWorksheet.Cells(i, 1).Value & Chr(13) & _
    "Line2: " & objWorksheet.Cells(i, 2).Value & Chr(13) & _
    "Line3: " & objWorksheet.Cells(i, 10).Value & Chr(13) & _
    "Line4: " & objWorksheet.Cells(i, 7).Value & Chr(13) & Chr(13) & _
    objWorksheet.Cells(i, 14).Value

 sfile = Cells(i, 3) & ".jpg" **** This is the jpg name

Set PPT = GetObject(, "PowerPoint.Application")

spath = "C:\test\"

'Write the string to the slide
pptNewSlide.Shapes(2).TextFrame.TextRange.Text = objWorksheet.Cells(i, 3).Value 'This enters the film Title
PPT.ActivePresentation.Slides(PPT.ActivePresentation.Slides.Count).Shapes(1).TextFrame.TextRange.Text = str


BoldSomeWords PPT.ActivePresentation.Slides(PPT.ActivePresentation.Slides.Count).Shapes(1), str, boldWords

'This is where I want to load in the Image.
'PPT.ActivePresentation.Slides(PPT.ActivePresentation.Slides.Count).Shapes(3).Picture = LoadPicture(spath) ' & sfile)
'PPT.ActivePresentation.Slides(2).Shapes(3)LoadImage((spath))

Next
End Sub

Function OpenFile()
'Dim the File Dialog object and string
Dim objFileDialog As FileDialog
Dim strFile As String

'Set the objFileDialog to an instance of the FileDialog object
Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)

'Set the Properties of the objFileDialog object
objFileDialog.AllowMultiSelect = False
objFileDialog.ButtonName = "Select"
objFileDialog.InitialView = msoFileDialogViewDetails
objFileDialog.Title = "Select Excel File"
objFileDialog.InitialFileName = "C:\"
objFileDialog.Filters.Clear
objFileDialog.Filters.Add "Excel", "*.xls; *.xlsx", 1
objFileDialog.FilterIndex = 1

'Show the FileDialog box
objFileDialog.Show

'Set strFile to the first record of the SelectedItems property of our FileDialog
strFile = objFileDialog.SelectedItems(1)

'Return the File Path string
OpenFile = strFile
End Function
È stato utile?

Soluzione

Ecco come aggiungere immagini nel PPT attualmente aperto Picture PlaceHolders utilizzando Excel.
Abbiamo usato Early Binding aggiungendo il Microsoft PowerPoint 14.0 Object Library riferimento.

Modifica1: Aggiunta di DoEvents e alcune spiegazioni

Sub ImportPictureInPlaceHolderFromExcel()

    Dim oPPt As PowerPoint.Application
    Dim oPPtSlide As PowerPoint.Slide
    Dim oPPtShp As PowerPoint.Shape

    '~~> Get hold of PPt instance meaning your currently open PPT presentation
    Set oPPt = GetObject(, "Powerpoint.Application")
    '~~> Reference the first slide which should contain picture placeholders
    Set oPPtSlide = oPPt.ActivePresentation.Slides(1)

    '~~> Now check each shape in slide
    For Each oPPtShp In oPPtSlide.Shapes
        '~~> You only need to work on Picture place holders
        If oPPtShp.PlaceholderFormat.Type = ppPlaceholderPicture Then
            With oPPtShp
                '~~> Now add the Picture
                '~~> For this example, picture path is in Cell A1
                oPPtSlide.Shapes.AddPicture Range("A1").Value, msoFalse, msoTrue, _
                                .Left, .Top, .Width, .Height
                '~~> Insert DoEvents here specially for big files, or network files
                '~~> DoEvents halts macro momentarily until the 
                '~~> system finishes what it's doing which is loading the picture file
                DoEvents
            End With
        End If
    Next

    Set oPPtSlide = Nothing
    Set oPPt = Nothing

End Sub

Per riassumere:
1.Otteniamo l'applicazione PPT
2.Prendiamo possesso della diapositiva e delle forme all'interno della diapositiva
3.Ora scegliamo le forme che sono ppPlaceholderPicture solo tipo
4.Noi usiamo il Shape Object's(ppPlaceholderTipo immagine) .Top, .Left, .Width and .Height proprietà come argomento a favore Collezione Forme .AddPicture metodo.

Ed ecco fatto, hai aggiunto un'immagine nel segnaposto immagine PPT.
Spero che questo sia ciò di cui hai bisogno.

Altri suggerimenti

Mentre quello sembra funziona quando aggiungi un'immagine a una diapositiva con un'immagine vuota o un segnaposto di contenuto, andrà sempre in quel segnaposto e si ridimensionerà per adattarlo.

Devi solo aggiungerlo in questo modo:

osld.Shapes.AddPicture "Path", msoFalse, msoTrue, -1, -1
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top