吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1150|回复: 9
收起左侧

[其他原创] 在ppt中实时显示面积或者其他信息。

  [复制链接]
etkane 发表于 2024-9-21 20:59
本帖最后由 etkane 于 2024-11-1 16:53 编辑

PPT的事件第一次研究,花了些功夫。
代码分三部分,实现的效果就是实时显示面积(利用图形长宽)
改改显示的内容,理论可以实时显示需要的任何信息。


’更新描述:2024/11/01
更新代码,可以多选了:更新如下,为显示面积子程序。同时删除或者注释掉类里面的下列代码:
[Visual Basic] 纯文本查看 复制代码
'Private Sub App_AfterShapeSizeChange(ByVal shp As Shape)
'    显示面积
'End Sub
'
'Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
'    显示面积
'End Sub




更新代码如下:这是模块里的代码,不要搞错。

[Visual Basic] 纯文本查看 复制代码
Sub 显示面积()
    Dim sr As ShapeRange
    'shuchu As String
    If ActiveWindow.Selection.Type <> ppSelectionShapes Then
    'Debug.Print "没有选择内容"
    If Not IsShapeExist("面积显示") Then
    Application.ActiveWindow.View.Slide.Shapes("面积显示").TextFrame.TextRange.text = ""
    End If
    Debug.Print ("没选择")
    GoTo out
    End If
       
    
    'Debug.Print IsError(ActiveWindow.Selection.ShapeRange)
    
    On Error Resume Next
    
    Set sr = ActiveWindow.Selection.ShapeRange
    
    For m = 1 To sr.Count
   
    Dim area As Double
    Dim k As Double
    Dim g  As Double
    Dim text As String
    k = Round(sr(m).Width / 28.3464565, 2) * 10
    g = Round(sr(m).Height / 28.3464565, 2) * 10
    area = Round(k * g, 2)
    heji = heji + area
    
    If IsShapeExist("面积显示") Then
            'Debug.Print "fbucunzai"
            Dim sd As Slide
            Set sd = Application.ActiveWindow.View.Slide
            With sd.Shapes.AddTextbox(1, 10, 50, 40, 150)
                .Name = "面积显示"
                .Fill.ForeColor.RGB = RGB(211, 211, 211)
                .TextEffect.FontSize = 8
            
            End With
            
                
        Else
            'Debug.Print "cunzai"

         
        End If
    shuchu = shuchu + sr(m).Name & Chr(10) & "东西:" & k & Chr(10) & _
                    "南北:" & g & Chr(10) & _
                    "面:" & area & Chr(10)
     Next m
     Application.ActiveWindow.View.Slide.Shapes("面积显示").TextFrame.TextRange.text = shuchu & "合计:" & heji
     
    Debug.Print (shuchu)
    
    
    
out:

End Sub



更新效果图:

微信截图_20241101165322.png



’更新描述结束:2024/11/01





原始发布版本内容描述:
image.png


[Visual Basic] 纯文本查看 复制代码
‘------------------------------------这一部分放到模块里
Dim X As New 类1
Sub 显面积()
    Set X.App = Application
End Sub


’----------------------------------这些放到类模块里,注意类模块改名 类1(这个耽误了我接近一下午)。
Public WithEvents App As Application

Private Sub App_AfterShapeSizeChange(ByVal shp As Shape)
    显示面积
End Sub

Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
    显示面积
End Sub

Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
    显示面积
End Sub


’----------------------------------这些放哪里都行,我是放模块里

Sub 显示面积()
    Dim sr As ShapeRange
    If ActiveWindow.Selection.Type <> ppSelectionShapes Then
    Debug.Print "没有选择内容"
    If Not IsShapeExist("面积显示") Then
    Application.ActiveWindow.View.Slide.Shapes("面积显示").TextFrame.TextRange.text = ""
    End If
   
    GoTo out
    End If
      
   
    'Debug.Print IsError(ActiveWindow.Selection.ShapeRange)
   
    On Error Resume Next
    Set sr = ActiveWindow.Selection.ShapeRange
   
    Dim area As Double
    Dim k As Double
    Dim g  As Double
    Dim text As String
    k = Round(sr.Width / 28.3464565, 2) * 10
    g = Round(sr.Height / 28.3464565, 2) * 10
    area = Round(k * g, 2)
    If IsShapeExist("面积显示") Then
            Debug.Print "fbucunzai"
            Dim sd As Slide
            Set sd = Application.ActiveWindow.View.Slide
            With sd.Shapes.AddTextbox(1, 10, 50, 40, 150)
                .Name = "面积显示"
                .Fill.ForeColor.RGB = RGB(211, 211, 211)
                .TextEffect.FontSize = 8
            
            End With
            
               
        Else
            Debug.Print "cunzai"
               Application.ActiveWindow.View.Slide.Shapes("面积显示").TextFrame.TextRange.text = _
                    "东西:" & k & Chr(10) & _
                    "南北:" & g & Chr(10) & _
                    "面:" & area
    End If

   
   
   
   
out:

End Sub




Function IsShapeExist(shapeName As String) As Boolean
    Dim shp As Shape
    On Error Resume Next ' 开始错误处理,防止找不到shape时产生错误
    Set shp = Application.ActiveWindow.View.Slide.Shapes(shapeName)
    On Error GoTo 0 ' 错误处理结束
    IsShapeExist = shp Is Nothing  ' 如果shape存在,返回True
End Function

免费评分

参与人数 5吾爱币 +11 热心值 +4 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
han163426 + 1 我很赞同!
zhaopengdoctor + 1 + 1 用心讨论,共获提升!
shadmmd + 1 + 1 谢谢@Thanks!
vethenc + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

justwz 发表于 2024-9-21 21:58
显示什么面积   拖放的模块吗
vethenc 发表于 2024-9-21 22:25
tjsdgzxy 发表于 2024-9-22 09:35
liuyanchen 发表于 2024-9-22 10:02
学习了,可以开发相关软件
xiao1314wang 发表于 2024-9-23 07:59
对于数学老师用途不小  试试看
52669988 发表于 2024-9-23 16:24
感谢分享
lipingtao 发表于 2024-9-24 12:04
耍出高度,耍出花样
zzl0308 发表于 2024-9-24 23:47
很好用的样子。。。
 楼主| etkane 发表于 2024-11-1 16:54
建议有用这个小程序的,更新代码。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 15:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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