请教:想要对幻灯片进行循环操作的代码怎么写?

weide_yang 发表于: 2010-1-27 11:24 来源: 扑奔PPT网

ppt中共有N张幻灯片,每张幻灯片上有一个textbox1控件。

现在需要在每张幻灯片的textbox1中都写入一个“A”字,这个代码怎么写呢?

也就是说,先要判断ppt中有多少张幻灯片,再逐一对其进行写入的操作。

恳请高手相助,谢谢!
大家对 请教:想要对幻灯片进行循环操作的代码怎么写? 的评论
amwyq 发表于 2010-1-27 11:40:54
用 For Each
weide_yang 发表于 2010-1-27 11:51:26
谢版主关注!这个我真不会做,恳请详细说明一下好么?

我这样写,试了不行:
for i=1 to slides.count
with slides(i)
.textbox1.value="小"
end with
next

请版主多多指教,谢谢!
laose 发表于 2010-1-28 10:33:41
给你写个自动化宏:

Sub onSlideShowpageChange()   
    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.Type = msoOLEControlObject Then
                shp.OLEFormat.Object.Text = "A"
            End If
        Next
    Next   
End Sub

[ 本帖最后由 laose 于 2010-1-28 10:41 编辑 ]
weide_yang 发表于 2010-1-28 12:45:44
多谢laose版主出手相助!!!就是这个意思了。
只是离我的实际需要还未达成最后的效果:我是想在每个textbox1中写入“A”,而在每个textbox2中写入“B”。
(您的代码是在所有的textbox中都写入" A " 的。)

附件如下,请参考赐教,谢谢!


(2010-01-28 12:46:17, Size: 18.2 KB, Downloads: 13)

laose 发表于 2010-1-28 19:11:41
你没说清楚啊,加个FOR循环就行了:

Sub onSlideShowpageChange()
   
    Dim i As Integer
   
    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.Type = msoOLEControlObject Then
                For i = 1 To sld.Shapes.Count
                    sld.Shapes("TextBox" & i).OLEFormat.Object.Text = Chr(64 + i)
                Next
            End If
        Next
    Next
   
End Sub

[ 本帖最后由 laose 于 2010-1-28 19:44 编辑 ]
weide_yang 发表于 2010-1-28 19:36:06
版主,您好!以下这句代码在附件中未能通过,请教怎么处理,谢谢您!

                    sld.Shapes(i).OLEFormat.Object.Text = Chr(64 + i)
laose 发表于 2010-1-28 19:45:00
看我更新后的代码如何??
xiaoyusmeil 发表于 2010-1-28 19:55:28
真后悔来的这么晚!虽然在同学们中间做的还是不错的,可是,看见这里高手们的帖子,才知道自己有多么……
weide_yang 发表于 2010-1-28 20:01:57
回版主,还是未能在附件中通过。还要请您费心,谢谢!

我原来写了几十个 with....,  end with:
    With Slide1
        .TextBox1.Value = "A"
        .TextBox2.Value = "B"
end with
    With Slide2
        .TextBox1.Value = "A"
        .TextBox2.Value = "B"
end with
..........

现在就是想的要用循环操作的方法来简化原表的代码,可是怎么也弄不成功。

[ 本帖最后由 weide_yang 于 2010-1-28 20:07 编辑 ]
laose 发表于 2010-1-28 20:04:31
==。我正在吃饭
weide_yang 发表于 2010-1-28 20:10:32
真不好意思,打扰您了!

过些时间,再向您请教,祝您快乐!!!
laose 发表于 2010-1-28 20:23:44
再试试这个:

Sub onSlideShowPageChange(wn As SlideShowWindow)
    Dim i As Integer
    For i = 1 To wn.View.Slide.Shapes.Count
        wn.View.Slide.Shapes("TextBox" & i).OLEFormat.Object.Text = Chr(64 + i)
    Next   
End Sub

[ 本帖最后由 laose 于 2010-1-28 20:26 编辑 ]
weide_yang 发表于 2010-1-28 21:01:51
我这里试用有些困难,版主可否以附件赐教,谢谢!
laose 发表于 2010-1-28 21:44:09
我在你源文件测试时成功的啊
laose 发表于 2010-1-28 21:47:55
6#的代码是每张幻灯片上仅有TEXTBOX控件时好使,13#的代码每张幻灯片多种对象时也好使!!你的怎么回事??
weide_yang 发表于 2010-1-29 09:08:07
版主请看看,我这再发附件给您,我是从工具菜单--宏 进入,怎么在对话框中看不到您那个宏的名字?谢谢。
如果您那里没问题,请从您那里再把附件发还给我看看,行吗?有劳您了!


(2010-01-29 09:08:55, Size: 22.1 KB, Downloads: 9)

laose 发表于 2010-1-29 09:31:50
我这里运行很正常啊,不用手工运行宏的,我给你的代码是自动化宏!
weide_yang 发表于 2010-1-29 16:38:20
我这里可能是没法用自动化宏了,我想是我自己太菜了...
版主,您可否提供一个手动的代码,当我把它做成菜单上的按钮后,可以被执行达成想要的效果。谢谢!!!
laose 发表于 2010-1-29 17:16:39
估计不是自动化的问题,可能是控件问题。
chnliwa 发表于 2010-2-01 11:59:04
天啦你们太高深了,我的知识太浅薄了
最新PPT模板
最新贴子
PPT热贴