找回密码
 立即注册
搜索

如何用VBA导出PPT段落中段首空了多少距离?

7
回复
1011
查看
[复制链接]

1

主题

17

帖子

24

幻币

江湖少侠

Rank: 2

积分
78
QQ
2017-2-6 22:36:03 显示全部楼层 |阅读模式
PPT中段落可以用标尺调整,也可以直接多空几个空格表示段首。想知道用VBA怎么获取段首空了多少空格或距离?
求教了。
PPT学习论坛
回复

使用道具 举报

0

主题

4

帖子

35

幻币

江湖少侠

Rank: 2

积分
128
QQ
2017-2-7 00:07:47 显示全部楼层
看看还能在哪里查到!写了多少天,一直未发表。

  • Private Sub CommandButton1_Click() '段落中段首空了多少空格
  • Dim str1 As String
  • Set shp = ActiveWindow.Selection.ShapeRange
  • str1 = Len(shp.TextFrame.TextRange.Characters)
  • str2 = Len(LTrim(shp.TextFrame.TextRange.Characters))
  • MsgBox str1 - str2End Sub

复制代码
你所说的几个贴都是我写的,只不过又换了名字而已。所有的知识都大同小异,几乎都是我模仿你,你模仿我。
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

11

帖子

74

幻币

一流武者

Rank: 3Rank: 3

积分
251
2017-2-7 01:00:48 显示全部楼层
多谢大神!
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

7

帖子

19

幻币

江湖少侠

Rank: 2

积分
96
QQ
2017-2-7 01:13:45 显示全部楼层
学习了学习了学习了
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

6

帖子

73

幻币

江湖少侠

Rank: 2

积分
116
2017-2-7 02:02:15 显示全部楼层
大神,我试了一下这个方法,当在段首有空格时,可以得到空格的个数。挺好的。
现在有另外一个疑问,怎么能得到首行缩进的数据呢?我看paragraphFormat里面没有啊
133412e0i0ys5sp5yqwi82.png
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

6

帖子

81

幻币

一流武者

Rank: 3Rank: 3

积分
264
QQ
2017-2-7 02:03:04 显示全部楼层
1、请不要叫我大神,我的技术等级是初级,我只是个vba的痴迷者,大家以朋友相称。如你能高抬我,我叫我老师吧。
2、以我目前的水平,我知道只有word中有“首行缩进”(或段首缩进)这个名词,excel和ppt均没有,也许是我孤陋寡闻。
3、既然ppt中没有“段首缩进”(暂时这么认为吧,或许这个名称比较恰当),那我们又想“段首缩进”,难道就没有方法了吗?
4,、方法是人想出来的,我们可以模仿word的这个功能,我对word vba接触较少,也是看了你的要求后,现学现卖的。
段首缩进,就是光标所在的行的段首空2个字符,不知这样的理解是否正确?word中是这样的:

  • Sub 段首缩进2字符()
  • With Selection.ParagraphFormat
  •     Selection.ParagraphFormat.CharacterUnitFirstLineIndent = 2  '设置段首缩进2字符
  • End With
  • End Sub

  • Sub 首行缩进2字符()
  • 'WORD文档中的第三段落实现首行缩进2字符
  • Dim MyParagraph As Range
  • Set MyParagraph = ActiveDocument.Range(ActiveDocument.Paragraphs(3).Range.Start, ActiveDocument.Paragraphs(3).Range.End)
  • If (MyParagraph.ParagraphFormat.CharacterUnitFirstLineIndent = 2) Then
  •     MsgBox "首行已经缩进"
  • Else
  •     MsgBox "首行未缩进"
  • MyParagraph.ParagraphFormat.CharacterUnitFirstLineIndent = 2
  • End IfEnd Sub

复制代码
步骤:
①选择需要的文本框
Set shp = ActiveWindow.Selection.ShapeRange(1)
②判断文本框段首字符,这要根据具体情况,这儿最复杂
str3 = shp.TextFrame.TextRange.Characters '
If LTrim(Left(str3, 1)) > 0 And LTrim(Left(str3, 1)) < 64
③如果段首是汉字,则空4个字符,如果是数字(或英文),则空2个字符。
If Asc(Left(str3, 1)) < 0 Then '中文
不好意思,我最近较忙,给你两个程序,你自己修改,或模仿,最主要是判断

  • Sub 文本框首个字符判断() '
  •     Set shp = ActiveWindow.Selection.ShapeRange(1) '选择的文本框
  •     str1 = Len(shp.TextFrame.TextRange.Characters) '字符串长度
  •     str2 = Len(LTrim(shp.TextFrame.TextRange.Characters)) '字符串去掉空格后的长度
  •     str3 = shp.TextFrame.TextRange.Characters '
  •    
  •     If Asc(Left(str3, 1)) < 0 Then '中文
  •         MsgBox &quot;第1个字符是中文&quot;
  •     End If
  •    
  •     If IsNumeric(Left(str3, 1)) = True Then '数字
  •         MsgBox &quot;第1个字符是数字&quot;
  •     End If
  •    
  •     If Asc(Left(str3, 1)) >= 65 And Asc(Left(str3, 1)) <= 122 Then '英文
  •         MsgBox &quot;第1个字符是英文&quot;
  •     End If
  •    
  •     If LTrim(Left(str3, 1)) > 0 And LTrim(Left(str3, 1)) < 64 Then
  •         MsgBox &quot;第1个字符是空格&quot;
  •         MsgBox &quot;共有&quot; & str1 - str2 & &quot;个空格&quot;
  •     End IfEnd Sub

复制代码

  • Sub 段首缩进()
  •     Set shp = ActiveWindow.Selection.ShapeRange(1) '选择的文本框
  •     str1 = Len(shp.TextFrame.TextRange.Characters) '字符串长度
  •     str2 = Len(LTrim(shp.TextFrame.TextRange.Characters)) '字符串去掉空格后的长度
  •     str3 = shp.TextFrame.TextRange.Characters '
  •    
  •     If str1 - str2 = 0 Then '判断段首是否有空格
  •         With shp.TextFrame.TextRange
  •         str4 = shp.TextFrame.TextRange.Characters(Start:=1, Length:=0) '光标放在字符串第1个字符前
  •             .Text = &quot;  &quot; & str3 '段首添加2个空格
  •         End With
  •     End If
  •    End Sub

复制代码
不知道能否帮到你,到此为止吧
PPT学习论坛
回复 支持 反对

使用道具 举报

4

主题

6

帖子

54

幻币

一流武者

Rank: 3Rank: 3

积分
209
QQ
2017-2-7 02:51:20 显示全部楼层
自问自答一下,应该叫首行缩进,不是段首缩进,楼上的办法可以处理使用空格模拟缩进的情况。
对于设置”段落 -- 缩进和间距 -- 特殊格式 -- 首行缩进“的情况,可以使用下面的脚本得到缩进距离:
    Application.ActivePresentation.Slides(1).Shapes(1).TextFrame2.TextRange.Paragraphs(1).ParagraphFormat.FirstLineIndent

复制代码
多谢楼上的同学了,交流才有启发。
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

7

帖子

82

幻币

一流武者

Rank: 3Rank: 3

积分
271
QQ
2017-2-7 02:53:59 显示全部楼层
请教一下,比如这段 Application.ActivePresentation.Slides(1)   问题是:如何用msgbox 跳出当前是第几个放映灯???比如如上那段是人为的指第1个   ,谢谢!急用!再比如说 .slides.counts是指当前总共有多少个放映灯片,那当前第几个是怎么样表达呢?
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册