| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 285 人关注过本帖
标题:求助:vfp控制PPT按键链接跳转指定页无反应是何原因?
只看楼主 加入收藏
cqycyhb
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-8-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
求助:vfp控制PPT按键链接跳转指定页无反应是何原因?
*以下VFP9.0编程控制PPT代码,从第2页跳转到第30页测试,.Action的值从1-10都试过,Hyperlink.SubAddresse值用cID值、cTitle值,或者2者结合都试过,均未成功,不知问题出在哪里?但如果用.Hyperlink.Address ="D:\XwJ.pptx"测试(需屏蔽Hyperlink.SubAddress,二都不能同时有),可以打开新的文件链接.
 
oPPT = CREATEOBJECT("PowerPoint.Application") && 适用微软OFFice
 * oPPT = CREATEOBJECT("KWPP.Application")     && 适用WPS office版
oPres = oPPT.Presentations.Add()
LOCAL cID, cTitle

* 创建幻灯片并设置标题
FOR i = 1 TO 50
    oSlide = oPres.Slides.Add(i, 1)  && 使用标题布局
    oSlide.Shapes(1).TextFrame.TextRange.Text = "第" + ALLTRIM(STR(i)) + "页"

    IF i = 30
        cID = ALLTRIM(STR(oSlide.SlideID))
        cTitle = oSlide.Shapes(1).TextFrame.TextRange.Text
    ENDIF

ENDFOR

* 在第2页添加跳转按钮
oSlide2 = oPres.Slides(2)
oShape = oSlide2.Shapes.AddShape(1, 100, 100, 200, 50)
oShape.TextFrame.TextRange.Text = "跳转到第30页"

WITH oShape.ActionSettings(1)
    .Action = 7
     .Hyperlink.SubAddress = cID  &&  或cID,cTitle
*    .Hyperlink.Address ="D:\cs.pptx"  &&  不与上句一起单独用可以

ENDWITH
oPres.SaveAs("D:\cs.pptx")

With oPres.SlideShowSettings
.ShowType =1   && 放映类型 1-演讲者放映 2-观众自行浏览 3-在展台浏览(全屏)
.LoopUntilStopped=0  && 循环显示各幻灯片 0-不循环 1-循环放映
.RangeType = 1  && 放映范围 1-全部 2\3-从XX开始到XX结束
.AdvanceMode=2  && 换片方式 1-手动 2-如果排练时间存在,则使用它
.Run   && 运行
ENDWiTH
INKEY(0)
oPres.Close()
oPPT.Quit()
RELEASE ALL
搜索更多相关主题的帖子: 控制 循环 链接 Hyperlink 跳转 
7 天前 08:58
cqycyhb
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-8-29
收藏
得分:0 
Hyperlink.SubAddress
有哪个大神知道这句该怎么赋值才行
6 天前 09:42
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1882
专家分:3654
注 册:2012-2-29
收藏
得分:1 
我也试了,
.Hyperlink.SubAddress = cID  &&  或cID,cTitle
就是这个未添加上超链接,不起作用。
5 天前 06:27
cqycyhb
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-8-29
收藏
得分:0 

查看了一下VBA示例文档,是这样说明的.如果转换成VFP语言,应该怎样写

Hyperlink.SubAddress
返回或设置与指定超链接相关联的文档中的位置,例如 WPS 文档中的书签、ET 工作表中的区域或WPP 演示文稿中的幻灯片。可读/写 String 类型。
语法
express.SubAddress
express   一个代表 Hyperlink 对象的变量。
示例
示例代码复制
/*本示例设置在幻灯片放映过程中,单击当前演示文稿第一张幻灯片第一个形状时,跳转到 Latest Figures.ppt 中名为“Last Quarter”的幻灯片。*/
function test(){    
Application.ActivePresentation.Slides.Item(1).Shapes.Item(1).ActionSettings.Item(ppMouseClick).Action = ppActionHyperlink    
let h = Application.ActivePresentation.Slides.Item(1).Shapes.Item(1).ActionSettings.Item(ppMouseClick).Hyperlink
    h.Address = "c:\\sales\\latest figures.ppt"
    h.SubAddress = "last quarter"
}

示例代码复制
/*本示例设置在幻灯片放映过程中,单击当前演示文稿第一张幻灯片第一个形状时,跳转到 Latest.xls 中 A1:B10 单元格区域。*/
function test(){    
ActivePresentation.Slides.Item(1).Shapes.Item(1).ActionSettings.Item(ppMouseClick).Action = ppActionHyperlink    
let h = ActivePresentation.Slides.Item(1).Shapes.Item(1).ActionSettings.Item(ppMouseClick).Hyperlink
    h.Address = "c:\\sales\\latest.xls"
    h.SubAddress = "A1:B10"
}


5 天前 10:51
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1882
专家分:3654
注 册:2012-2-29
收藏
得分:1 
回复 4楼 cqycyhb
改成下面的,试一试:
程序代码:
oPPT = CREATEOBJECT("PowerPoint.Application") && 适用微软OFFice

 * oPPT = CREATEOBJECT("KWPP.Application")     && 适用WPS office版
oPres = oPPT.Presentations.Add()
LOCAL cID, cTitle

* 创建幻灯片并设置标题
FOR i = 1 TO 50
    oSlide = oPres.Slides.Add(i, 1)  && 使用标题布局
    oSlide.Shapes(1).TextFrame.TextRange.Text = "第" + ALLTRIM(STR(i)) + "页"

    IF i = 30
        cID = ALLTRIM(STR(oSlide.SlideID))
        cTitle = oSlide.Shapes(1).TextFrame.TextRange.Text
    ENDIF

ENDFOR

* 在第2页添加跳转按钮
oSlide2 = oPres.Slides(2)
oShape = oSlide2.Shapes.AddShape(1, 100, 100, 200, 50)
oShape.TextFrame.TextRange.Text = "跳转到第30页"

WITH oShape.ActionSettings(1)
    .Action = 7
    .Hyperlink.Address =""
    .Hyperlink.SubAddress = "第30页"
ENDWITH
oPres.SaveAs(SYS(5)+CURDIR()+"cs.pptx")

With oPres.SlideShowSettings 
    .ShowType =1   && 放映类型 1-演讲者放映 2-观众自行浏览 3-在展台浏览(全屏)
    .LoopUntilStopped=0  && 循环显示各幻灯片 0-不循环 1-循环放映
    .RangeType = 1  && 放映范围 1-全部 2\3-从XX开始到XX结束
    .AdvanceMode=2  && 换片方式 1-手动 2-如果排练时间存在,则使用它
    .Run   && 运行
ENDWiTH 
INKEY(0)
oPres.Close()
oPPT.Quit()
RELEASE ALL
4 天前 06:27
cqycyhb
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-8-29
收藏
得分:0 
回复 5楼 schtg
我是用的WPS版本,测试了一下,只是跳到下一页,还是没成功。不知微软PPT测试能否成功
4 天前 11:10
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:728
专家分:2927
注 册:2018-3-13
收藏
得分:1 
感觉就把赋值顺序颠倒一下就行,先赋值 Address 再赋值 SubAddress。我这电脑上没 PowerPoint 验证不了

.Hyperlink.Address ="D:\cs.pptx"  &&  不与上句一起单独用可以
.Hyperlink.SubAddress = cID  &&  或cID,cTitle


这家伙很懒,啥也没留下
4 天前 12:46
cqycyhb
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-8-29
收藏
得分:0 
回复 7楼 csyx
测试了,交换位置还是不行。
4 天前 13:15
cqycyhb
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-8-29
收藏
得分:0 
以下是网上查到的ActionSettings(1).Action  在VBA中常量对应的VFP值,
经测试,1-6这几个数值测试成功(需屏蔽Address和SubAddress语句),1-下一页 2-上一页 3-第一页 4-最后一页 5-最近观看那一页 6-结束放映 .其余数值没测试成功

ppActionMixed    -2    执行混合动作。
ppActionNone    0    不执行任何动作。
ppActionNextSlide    1    转到下一张幻灯片。
ppActionPreviousSlide    2    转到上一张幻灯片。
ppActionFirstSlide    3    返回第一张幻灯片。
ppActionLastSlide    4    移动到最后一张幻灯片。
ppActionLastSlideViewed    5    移动到最近观看的幻灯片。
ppActionEndShow    6    幻灯片放映结束。
ppActionHyperlink    7    超链接。
ppActionRunMacro    8    运行一个宏。
ppActionRunProgram    9    运行一个程序。
ppActionNamedSlideShow    10    运行幻灯片。
ppActionOLEVerb    11    OLE 动作。
ppActionPlay    12    从幻灯片开始。

4 天前 14:58
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1882
专家分:3654
注 册:2012-2-29
收藏
得分:1 
回复 6楼 cqycyhb
正好空闲,测试了一下,应该可以的哈。
第一步,生成PPTX。
程序代码:
oPPT = CREATEOBJECT("PowerPoint.Application") && 适用微软OFFice

 * oPPT = CREATEOBJECT("KWPP.Application")     && 适用WPS office版
oPres = oPPT.Presentations.Add()
LOCAL cID, cTitle

* 创建幻灯片并设置标题
FOR i = 1 TO 50
    oSlide = oPres.Slides.Add(i, 1)  && 使用标题布局
    oSlide.Shapes(1).TextFrame.TextRange.Text = "第" + ALLTRIM(STR(i)) + "页"

    IF i = 30
        cID = ALLTRIM(STR(oSlide.SlideID))
        cTitle = oSlide.Shapes(1).TextFrame.TextRange.Text
    ENDIF

ENDFOR

* 在第2页添加跳转按钮
oSlide2 = oPres.Slides(2)
oShape = oSlide2.Shapes.AddShape(1, 100, 100, 200, 50)
oShape.TextFrame.TextRange.Text = "跳转到第30页"

WITH oShape.ActionSettings(1)
    .Action = 7
    .Hyperlink.Address =""
    .Hyperlink.SubAddress = "第30页"
ENDWITH
oPres.SaveAs(SYS(5)+CURDIR()+"cs.pptx")

oPres.Close()
oPPT.Quit()
RELEASE ALL
quit

第二步,用WPS打开生成的cs.PPTX文件,可以达到效果。

4 天前 15:23
快速回复:求助:vfp控制PPT按键链接跳转指定页无反应是何原因?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020976 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved