ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2118|回复: 7

[求助] 请教老师们一段代码选中PPT中所有文本框

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-11-6 16:54 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请教老师们一段代码选中PPT中所有文本框
用VBA选中PPT中每页中的所有文本框
请老师们帮我写段这样的代码,谢谢老师们了!

TA的精华主题

TA的得分主题

发表于 2019-11-6 19:24 | 显示全部楼层
只能同时选中活动页面的文本框,非活动页面的无法选中,就像excel工作表里的对象未激活工作表时也不能选中一样,不过你倒是可以用集合把这些对象装起来,需要的时候直接从集合里调用处理
下面这段会选中活动工作表里有全部文本框
  1. Sub test()
  2. Dim Sld As Slide, Obj As Object, N&, I&
  3. I = Application.ActiveWindow.View.Slide.SlideNumber
  4. For Each Sld In ActivePresentation.Slides
  5.     If Sld.SlideNumber = I Then
  6.         For Each Obj In Sld.Shapes
  7.             If Obj.Type = msoTextBox Then
  8.                 N = N + 1
  9.                 If N = 1 Then Obj.Select Else Obj.Select False
  10.             End If
  11.         Next Obj
  12.     End If
  13. Next Sld
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-7 09:13 | 显示全部楼层
kevinchengcw 发表于 2019-11-6 19:24
只能同时选中活动页面的文本框,非活动页面的无法选中,就像excel工作表里的对象未激活工作表时也不能选中 ...

老师你好,我在PPT中用这段代码没有成功
老师可否帮我写下,能够一次选中PPT中所有文本框,并将字体颜色调整为黑色、字号15
谢谢了老师!

TA的精华主题

TA的得分主题

发表于 2019-11-7 09:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
那你不用选择,循环到哪个就设定哪个就行了,这样应该可以操作全部,因为不需要选择

TA的精华主题

TA的得分主题

发表于 2019-11-7 12:08 | 显示全部楼层
Sub test()
    Dim ptApp, ptPre, n%
    Dim Sld As Slide, Obj As Object
    Application.ScreenUpdating = False
    Set ptApp = CreateObject("PowerPoint.Application")
    Set ptPre = ptApp.Presentations.Open("C:\Users\Administrator\Desktop\演示文稿1.pptx", ReadOnly:=msoFalse)
    ptApp.WindowState = ppWindowMinimized
    For Each Sld In ptPre.Slides
        For Each Obj In Sld.Shapes
            Sld.Select
            If Obj.Type = msoTextBox Then
                Obj.Select
                Obj.TextFrame.TextRange.Font.Size = 15
                Obj.TextFrame.TextRange.Font.Name = "Microsoft YaHei Light"
                Obj.TextFrame.TextRange.Font.Color.RGB = RGB(0, 0, 0)
            End If
        Next Obj
    Next Sld
    'ptPre.Save      '保存PPT文件
    'ptPre.Close     '关闭PPT文件
    'ptApp.Quit      '退出PPT程序
    Set ptPre = Nothing
    Set ptApp = Nothing
    Application.ScreenUpdating = True '关闭刷新
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-21 18:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
T100 发表于 2019-11-7 12:08
Sub test()
    Dim ptApp, ptPre, n%
    Dim Sld As Slide, Obj As Object

老师你好,才看到老师的代码,谢谢老师了,我是把代码用到当前PPT中,我修改了下,没有成功,请老师帮修改下,谢谢老师了!

TA的精华主题

TA的得分主题

发表于 2019-11-22 17:24 | 显示全部楼层
yjwdjfqb 发表于 2019-11-21 18:14
老师你好,才看到老师的代码,谢谢老师了,我是把代码用到当前PPT中,我修改了下,没有成功,请老师帮修 ...

Application.ScreenUpdating = False,Application.ScreenUpdating = True删除,再改下面2句定义试试
    Set ptApp = ActiveWindow
    Set ptPre = ActivePresentation

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-22 17:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
T100 发表于 2019-11-22 17:24
Application.ScreenUpdating = False,Application.ScreenUpdating = True删除,再改下面2句定义试试
   ...
  1. Sub test()
  2.     Dim ptApp, ptPre, n%
  3.     Dim Sld As Slide, Obj As Object
  4.    
  5.     Application.ScreenUpdating = False
  6.    

  7. ptApp.WindowState = ppWindowMinimized
  8.     For Each Sld In ptPre.Slides
  9.         For Each Obj In Sld.Shapes
  10.             Sld.Select
  11.             If Obj.Type = msoTextBox Then
  12.                 Obj.Select
  13.                 Obj.TextFrame.TextRange.Font.Size = 15
  14.                 Obj.TextFrame.TextRange.Font.Name = "Microsoft YaHei Light"
  15.                 Obj.TextFrame.TextRange.Font.Color.RGB = RGB(0, 0, 0)
  16.             End If
  17.         Next Obj
  18.     Next Sld
  19.     'ptPre.Save      '保存PPT文件
  20.     'ptPre.Close     '关闭PPT文件
  21.     'ptApp.Quit      '退出PPT程序
  22.    Set ptApp = ActiveWindow
  23.     Set ptPre = ActivePresentation
  24.     Application.ScreenUpdating = True '关闭刷新
  25. End Sub
复制代码
QQ截图20191122174547.jpg
老师你好,提示这样的,什么问题呢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 07:30 , Processed in 0.032013 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表