繁体   English   中英

Excel / PowerPoint VBA和后期绑定

[英]Excel/PowerPoint VBA and late binding

我一直在构建一个工具,可以从Excel工作簿中的数据生成PowerPoint幻灯片。 我在工作中的计算机和家里的计算机之间来回移动。 工作计算机具有Excel 2013,而家用计算机具有2016。这通常不是问题...当我从家用计算机移动到工作计算机时,我只需要将引用从v16对象库更改为v15对象图书馆。

本周早些时候,尽管我遇到了一个我无法解决的错误...详细在这里解决该问题的建议之一是切换到后期绑定,因此我不需要参考。 这是一个非常容易的切换,但是导致生成的ppt幻灯片出错。

在原始(早期绑定)版本中,我将事情设置为

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PPLayout As CustomLayout
Dim PPshape As Variant
Dim tBox As PowerPoint.Shape

接着

Set PPApp = New PowerPoint.Application
Set PPPres = PPApp.Presentations.Open(fileName, msoTrue, , msoFalse)

然后用

wsGenerator.Activate
wsGenerator.Range("B32:L37").Select
Selection.Copy
With PPSlide.Shapes.PasteSpecial(ppPasteMetafilePicture)
     .Top = 450
     .Left = 50
     .Height = 100
     .Width = 325
End With

生成的幻灯片的一部分看起来像这样

在此处输入图片说明

底部的表是上面的代码粘贴的部分。

当我更改为后期绑定时,我只需进行这些更改

'Dim PPApp As PowerPoint.Application
Dim PPApp As Object

'Dim PPPres As PowerPoint.Presentation
Dim PPPres As Object

'Dim PPSlide As PowerPoint.Slide
Dim PPSlide As Object

'Dim PPLayout As CustomLayout
Dim PPLayout As Object

'Dim tBox As PowerPoint.Shape
Dim tBox As Object

Dim PPshape As Variant

接着

'Set PPApp = New PowerPoint.Application
Set PPApp = CreateObject("PowerPoint.Application")

其他所有内容保持不变。 生成的图表现在看起来像这样

在此处输入图片说明

请注意,它现在从幻灯片的底部延伸。

有什么想法吗?

似乎您已将声明更改为后期绑定,但是您可能仍在使用某些PowerPoint常量(例如ppPasteMetafilePicture ),这些常量将不再解析为其早期绑定的值,而是默认为0

您需要为ppPasteMetafilePicture定义一个局部常量,以使该值可用。

顺便说一句,您应该始终使用Option Explicit ,然后VBE将自动发现未声明常量的用法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM