使用切换按钮显示/隐藏图片Powerpoint VBA

如何解决使用切换按钮显示/隐藏图片Powerpoint VBA

我想使用VB宏在PowerPoint演示文稿中显示隐藏图片。 我编写了在空白幻灯片上插入一些图的代码。 对于每个图,我创建一个切换按钮。 我的想法是,当我单击“按钮”时,图片将可见,如果再次单击,图片将消失(幻灯片显示模式下的所有操作)。 问题是我无法在同一例程中将此功能分配给“切换按钮”(请参见下文)。

Sub insertPics()

Dim strFolder As String ' Full path to folder
Dim strName As String
Dim oPres As Presentation
Dim osld As Slide
Dim ocust As CustomLayout
Dim vertPos As Long
Dim plotNumb As Long
Dim plotFig As Shape
Dim toggBut As Shape

'Delete all shapes in the slide
For Each Sld In ActivePresentation.Slides
    TotalShapes = Sld.Shapes.Count
    For i = TotalShapes To 1 Step -1
        Sld.Shapes(i).Delete
    Next
Next

' Folder where pictures are located:
strFolder = "C:\Users\MyUser\pictures\"

Set oPres = ActivePresentation
Set osld = oPres.Slides(oPres.Slides.Count)
Set ocust = osld.CustomLayout

strName = Dir$(strFolder & "*.bmp")
vertPos = 100
While strName <> ""

plotNumb = plotNumb + 1
vertPos = vertPos + 37

Set plotFig = osld.Shapes.AddPicture(strFolder & strName,msoFalse,msoTrue,Left:=150,Top:=120,Width:=525,Height:=297)
    With plotFig
        .Line.Visible = True
        .Line.ForeColor.RGB = vbWhite
        If plotNumb = 1 Then
            .Name = "AxisSystem"
            .Visible = True
        Else
            .Name = "Plot" & (plotNumb - 1)
            .Visible = False
        End If
        With .PictureFormat
            ColorToChange = RGB(255,255,255)
            .TransparentBackground = msoTrue
            .TransparencyColor = ColorToChange
        End With
        .Fill.Visible = msoFalse
    End With

If plotNumb > 1 Then
    Set toggBut = Application.ActiveWindow.View.Slide.Shapes.AddOLEObject(ClassName:="Forms.ToggleButton.1",Link:=True)
            With toggBut.OLEFormat.Object
                .Top = vertPos
                .Left = 750
                .Height = 30
                .Width = 50
                .Caption = "Plot " & (plotNumb - 1)
                .BackStyle = 0
                .Name = "TB" & (plotNumb - 1)
                With .Font
                    .Size = 10
                End With
            End With
End If

strName = Dir()

Wend

End Sub

我知道可以通过右键单击切换按钮并选择“查看代码”选项来实现。我什至使用以下代码设法做到了:

Private Sub TB1_Click()
If TB1.Value = True Then
    ActivePresentation.Slides(1).Shapes("Plot1").Visible = True
Else
    ActivePresentation.Slides(1).Shapes("Plot1").Visible = False
End If
End Sub


Private Sub TB2_Click()
If TB2.Value = True Then
    ActivePresentation.Slides(1).Shapes("Plot2").Visible = True
Else
    ActivePresentation.Slides(1).Shapes("Plot2").Visible = False
End If
End Sub


Private Sub TB3_Click()
If TB3.Value = True Then
    ActivePresentation.Slides(1).Shapes("Plot3").Visible = True
Else
    ActivePresentation.Slides(1).Shapes("Plot3").Visible = False
End If
End Sub

但是对于我来说,一旦我必须为每个“切换按钮”逐个创建一个子例程,这个选项就不会有趣了。

我正在使用Windows,并且正在使用Powerpoint 2016。

有人可以帮我吗?

亲切的问候,

Murilo

解决方法

为每张图片分配“运行宏”的操作设置:ToggleVisibility,然后在项目中包含以下内容:

with open(filename,"r") as file:
    result = [line.split(',') for line in file]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-