利用VBA如何访问powerpoint中已经创建的组件,如艺术字。

kezhu 2008-10-16 02:47:44
如何找到PPT中各个组件的名字?有没有类似于下面的语句?
页面2.艺术字1.Text=页面1.艺术字1.Text+页面1.艺术字2.Text

目的是ppt播放时通过宏动态修改其中的内容,格式部分已经写好,包括样式、阴影、动画等等,如果抛开PPT纯粹用程序(比如VC、VB等),访问很容易,但所有PPT中现成的特效用程序重新编写的话,工作量太大了,最好能把程序写到PPT里面去。

满分,望指教。
...全文
490 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kezhu 2008-10-29
  • 打赏
  • 举报
回复
kezhu 2008-10-20
  • 打赏
  • 举报
回复
这是创建的方法吧,创建可以手动,程序只需要改动文本即可,因为所有的阴影等效果,播放时的动画都已经做好,没必要重新创建吧。

类似"WordArt 5"的名字,我现在用录制宏的方法得到,但2003下无法修改。

图片在2003下不知如何修改,2007下可以手动修改,却找不到如何录制宏。。。。
lzw8077 2008-10-20
  • 打赏
  • 举报
回复
AddTextEffect 方法
参阅应用于示例特性创建艺术字对象。返回一个代表新艺术字对象的 Shape 对象。

expression.AddTextEffect(PresetTextEffect, Text, FontName, FontSize, FontBold, FontItalic, Left, Top)
expression 必选。该表达式返回“应用于”列表中的对象之一。

PresetTexture 必选。MsoPresetTexture 类型。预设的文本效果。

MsoPresetTextEffect 可以是下列 MsoPresetTextEffect 类型常数之一。
msoTextEffect1
msoTextEffect2
msoTextEffect3
msoTextEffect4
msoTextEffect5
msoTextEffect6
msoTextEffect7
msoTextEffect8
msoTextEffect9
msoTextEffect10
msoTextEffect11
msoTextEffect12
msoTextEffect13
msoTextEffect14
msoTextEffect15
msoTextEffect16
msoTextEffect17
msoTextEffect18
msoTextEffect19
msoTextEffect20
msoTextEffect21
msoTextEffect22
msoTextEffect23
msoTextEffect24
msoTextEffect25
msoTextEffect26
msoTextEffect27
msoTextEffect28
msoTextEffect29
msoTextEffect30
msoTextEffectMixed


Text 必选。String 类型。艺术字的文本。

FontName 必选。String 类型。艺术字中使用的字体名称。

FontSize 必选。Single 类型。艺术字中使用的字体大小(以磅为单位)。

FontBold 必选。MsoTriState 类型。确定艺术字中使用的字体是否设为粗体。

MsoTriState 可以是下列 MsoTriState 类型常数之一。
msoCTrue
msoFalse
msoTriStateMixed
msoTriStateToggle
msoTrue 将艺术字中的字体设为粗体。

FontItalic 必选。MsoTriState 类型。确定艺术字中使用的字体是否设为斜体。

MsoTriState 可以是下列 MsoTriState 类型常数之一。
msoCTrue
msoFalse
msoTriStateMixed
msoTriStateToggle
msoTrue 将艺术字中的字体设为斜体。

Left 必选。Single 类型。艺术字边界框左边缘相对于幻灯片左边缘的位置(以磅为单位)。

Top 必选。Single 类型。艺术字边界框上边缘相对于幻灯片上边缘的位置(以磅为单位)。

kezhu 2008-10-20
  • 打赏
  • 举报
回复
你误会我意思了,我的意思是ppt中已经有很多组件,格式、特效、动画已经做好(别人做的),程序只需要改动其中的内容,最好不要重新创建。

各个组件在创建的时候没有特定的顺序,比如从左到右为Lable1,Button2等,很可能是乱七八糟,希望手动给改过来,改成符合编程者习惯的名字,比如lblTitle,cmdShow等等。

在程序中只需要改动其中的内容,即文字和图片,文字用你的方法可以了,图片目前不知道如何改动,只找到AddPicture函数,编辑状态下也不知道如何修改图片内容却保留做好的格式、特效、动画,2007下有更改图片选项,可以做到这个要求,但找不到录制宏的选项,不知怎样在程序里处理。

望指教。
northwolves 2008-10-20
  • 打赏
  • 举报
回复
类似"WordArt 5"的名字,我现在用录制宏的方法得到,但2003下无法修改。
----------------

Sub macro1()
Dim sh As Shape, sl As Slide
For Each sl In ActivePresentation.Slides
For Each sh In sl.Shapes
sh.Name = ActivePresentation.BuiltInDocumentProperties("author") & Split(Rnd, ".")(1)
Debug.Print sl.Name & "-" & sh.Name
Next
Next
End Sub
northwolves 2008-10-20
  • 打赏
  • 举报
回复
如何找到PPT中各个组件的名字?
--------------------
遍历:
Sub macro1()
Dim sh As Shape, sl As Slide
For Each sl In ActivePresentation.Slides
For Each sh In sl.Shapes
Debug.Print sl.Name & "-" & sh.Name
Next
Next
End Sub
kezhu 2008-10-19
  • 打赏
  • 举报
回复
另外,已经画好的图片可以修改其中的内容吗?有无类似loadpicture等的函数??
kezhu 2008-10-17
  • 打赏
  • 举报
回复
谢谢,那类似"WordArt 5"的名字该如何得到?用的是office2003。
其他页面也是这样的调用方式吗?ActiveWindow.Selection指的是编辑时当前页面被选中的组件吧?播放时可以用吗?我去试一下。
lzw8077 2008-10-16
  • 打赏
  • 举报
回复
ActiveWindow.Selection.SlideRange.Shapes("WordArt 5").Select
ActiveWindow.Selection.ShapeRange.TextEffect.Text = "abcdefgh"

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧