如何使用VBA宏在Powerpoint Slide中“重置图片”?

时间:2015-04-10 23:05:47

标签: image vba excel-vba powerpoint excel

我正在使用Excel生成功率点演示。宏正在运行excel。它工作得非常好。问题是Excel宏以奇怪的格式粘贴图片。我必须通过右键单击每张图片手动使用“重置图片”命令 - >图片格式 - >重置图片

是否可以为我自动创建一个可以自动执行重置图像命令的宏功率点?

让你前进 最好的问候

 'getting name of picture from Excel sheet cell

 logopic = ThisWorkbook.Sheets("Jan 2015").Range("z" & CellNr).Value
 apic = ThisWorkbook.Sheets("Jan 2015").Range("aa" & CellNr).Value
 mpic = ThisWorkbook.Sheets("Jan 2015").Range("ab" & CellNr).Value

如果ThisWorkbook.Sheets(“Jan 2015”)。Range(“z”& CellNr)> 0然后

'我们在这里复制相应幻灯片中的徽标图片

 oPP1.Slides(2).Shapes.AddPicture("" & FolderPath & "\" & logopic &    ".jpg", msoFalse, msoCTrue, 10, 10, 60, 45).Apply

2 个答案:

答案 0 :(得分:0)

记录powerpoint的宏录制器中的步骤。这将为您提供粘贴到您的Excel宏的基本代码。 Alt T,M,R开始,相同的键停止录音。然后按Alt + F11打开Powerpoint的VBA编辑器以查找代码。

另请参阅“选择性粘贴”命令,您可以在其中选择要粘贴的格式。

这是我在VBA - VBS中做同样的答案。对你来说,它更容易,因为它是VBA - VBA。确保在Excel中的参考文献中输入powerpoint。

  

记录excel宏录制器中的步骤。你必须重写一下,因为它使用了一种vbs不会的语法。

     

这适用于(我没有介质9)xlRangeAutoFormatAccounting4在vba中。

Selection.AutoFormat Format:=xlRangeAutoFormatAccounting4, Number:=True, _
    Font:=True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
  

首先在vba的对象浏览器中查找常量。 xlRangeAutoFormatAccounting4 = 17

     

然后在对象浏览器中查看该函数,并查看函数定义的底部。

Function AutoFormat([Format As XlRangeAutoFormat = xlRangeAutoFormatClassic1], [Number], [Font], [Alignment], [Border], [Pattern], [Width])
  

所以vba变成vbs(和vbs在vba中工作)(正如你所看到的,你可以通过正确的方式计算出来,而不需要通常查看函数)

Selection.AutoFormat 17, True, True, True,True, True, True
  

所以你的代码变成了

objXLWs.Range("A3").CurrentRegion.Select.AutoFormat 17, True, True, True,True, True, True
  

您正在使用Excel,您可以将其记录在Excel中并让Excel编写您的代码。

     

Alt + T,M,R

     

然后是Home键,然后是Up Arrow。停止录音。

     

看看Excel写的是什么

Selection.End(xlUp).Select
  

或者您是否有录制的“转到”对话框

Application.Goto Reference:="R1C1"
  

或者您已录制了Ctrl + Home

Range("A1").Select

答案 1 :(得分:0)

Sub InsertPictureExample()

    ' This inserts a picture at "natural" size on
    ' Slide 1 of the current active presentation

    Dim oSh As Shape

    With ActivePresentation.Slides(1)
        Set oSh = .Shapes.AddPicture("c:\temp\thing.png", msoFalse, msoTrue, 0, 0, -1, -1)
        ' position the shape if desired:
        oSh.Left = 100
        oSh.Top = 100
    End With

End Sub