VBA 代码,用于将文件夹中的 Excel 个文件转换(或复制)到相应的 PowerPoint 演示文稿中
VBA code to convert (or make duplicate of) Excel files in a folder into respective PowerPoint presentations
我是 Excel 的新手,我正在尝试编写一个宏来将多个 Excel 电子表格转换为多个 PowerPoint 幻灯片。到目前为止,我已经找到了一种方法,可以从网站上的 Excel 个工作表制作单独的幻灯片:
Option Explicit
Sub ExcelRangeToPowerPoint()
Dim rng As Excel.Range
Dim PowerPointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
Dim mySlide As PowerPoint.Slide
Dim myShapeRange As PowerPoint.Shape
'Copy Range from Excel
Set rng = ThisWorkbook.ActiveSheet.Range("A1:G17")
'Create an Instance of PowerPoint
On Error Resume Next
'Is PowerPoint already opened?
Set PowerPointApp = GetObject(class:="PowerPoint.Application")
'Clear the error between errors
Err.Clear
'If PowerPoint is not already open then open PowerPoint
If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application")
'Handle if the PowerPoint Application is not found
If Err.Number = 429 Then
MsgBox "PowerPoint could not be found, aborting."
Exit Sub
End If
On Error GoTo 0
'Make PowerPoint Visible and Active
PowerPointApp.Visible = True
PowerPointApp.Activate
'Create a New Presentation
Set myPresentation = PowerPointApp.Presentations.Add
'Add a slide to the Presentation
Set mySlide = myPresentation.Slides.Add(1, ppLayoutTitleOnly)
'Copy Excel Range
rng.Copy
'Paste to PowerPoint and position
mySlide.Shapes.PasteSpecial DataType:=ppPasteEnhancedMetafile
Set myShapeRange = mySlide.Shapes(mySlide.Shapes.Count)
'Set position:
myShapeRange.Left = 150
myShapeRange.Top = 186
'Clear The Clipboard
Application.CutCopyMode = False
End Sub
我只是想弄清楚,是否有一个宏可以循环遍历给定的 folder/directory 并将所有 Excel 文件转换为 PowerPoint 演示文稿?
你看懂代码了吗?它将从单个单元格范围创建单个 powerpoint 幻灯片。如果您的工作簿文件有很多 sheet 怎么办?如果每个 sheet.
的范围都不同怎么办?
您的代码需要适应这一点。
所以你会编写
- 遍历在文件夹中找到的每个 excel 文件
- 循环遍历文件
中的每个 sheet
- 为当前 sheet
的一个 powerpoint 文件添加一张新幻灯片
- 查找当前 sheet 的范围并将该范围添加到幻灯片
你是不是迫不及待地想把它自动化?如果您只需要执行一次,您最好手动执行此操作?当然,这取决于文件的数量和执行频率。
要回答您的问题,请参阅 here,它使用 dir 来查找文件夹中的文件。但是需要更多的代码才能做到这一点!
可能有一个工具可以在网络上执行此操作...例如here我没有起诉它,但这是一个普遍的需求。
我是 Excel 的新手,我正在尝试编写一个宏来将多个 Excel 电子表格转换为多个 PowerPoint 幻灯片。到目前为止,我已经找到了一种方法,可以从网站上的 Excel 个工作表制作单独的幻灯片:
Option Explicit
Sub ExcelRangeToPowerPoint()
Dim rng As Excel.Range
Dim PowerPointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
Dim mySlide As PowerPoint.Slide
Dim myShapeRange As PowerPoint.Shape
'Copy Range from Excel
Set rng = ThisWorkbook.ActiveSheet.Range("A1:G17")
'Create an Instance of PowerPoint
On Error Resume Next
'Is PowerPoint already opened?
Set PowerPointApp = GetObject(class:="PowerPoint.Application")
'Clear the error between errors
Err.Clear
'If PowerPoint is not already open then open PowerPoint
If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application")
'Handle if the PowerPoint Application is not found
If Err.Number = 429 Then
MsgBox "PowerPoint could not be found, aborting."
Exit Sub
End If
On Error GoTo 0
'Make PowerPoint Visible and Active
PowerPointApp.Visible = True
PowerPointApp.Activate
'Create a New Presentation
Set myPresentation = PowerPointApp.Presentations.Add
'Add a slide to the Presentation
Set mySlide = myPresentation.Slides.Add(1, ppLayoutTitleOnly)
'Copy Excel Range
rng.Copy
'Paste to PowerPoint and position
mySlide.Shapes.PasteSpecial DataType:=ppPasteEnhancedMetafile
Set myShapeRange = mySlide.Shapes(mySlide.Shapes.Count)
'Set position:
myShapeRange.Left = 150
myShapeRange.Top = 186
'Clear The Clipboard
Application.CutCopyMode = False
End Sub
我只是想弄清楚,是否有一个宏可以循环遍历给定的 folder/directory 并将所有 Excel 文件转换为 PowerPoint 演示文稿?
你看懂代码了吗?它将从单个单元格范围创建单个 powerpoint 幻灯片。如果您的工作簿文件有很多 sheet 怎么办?如果每个 sheet.
的范围都不同怎么办?您的代码需要适应这一点。
所以你会编写
- 遍历在文件夹中找到的每个 excel 文件
- 循环遍历文件 中的每个 sheet
- 为当前 sheet 的一个 powerpoint 文件添加一张新幻灯片
- 查找当前 sheet 的范围并将该范围添加到幻灯片
你是不是迫不及待地想把它自动化?如果您只需要执行一次,您最好手动执行此操作?当然,这取决于文件的数量和执行频率。
要回答您的问题,请参阅 here,它使用 dir 来查找文件夹中的文件。但是需要更多的代码才能做到这一点!
可能有一个工具可以在网络上执行此操作...例如here我没有起诉它,但这是一个普遍的需求。