请问WPSppt中js宏javascript怎么做进度条?思路已提供,就差不知道js与ppt相关语法和函数

想要在WPS的ppt中加入进度条以显示ppt slide播放的进度,显示效果类似B站视频底下那种矩形进度条。
大概的思路是:
获取ppt总页码设置为一个变量x;
获取ppt宽度w;
计算每一页ppt在进度条上一格的长度l=w/x;
for循环i从第二页到最后一页ppt:在这一页slide顶部绘制矩形进度条背景板(高度按需设置,宽为ppt宽度w);再绘制进度条(以最左上为顶点;高度与背景的相同,宽为i*l)。
然后,如果可以获取ppt每一章节的标题加入到进度条中显示的话就更好了。
不清楚这个步骤需要运用什么函数或者下载什么模块吗?
网上关于ppt宏语言的文件教程大多是VBA语言,而目前我的WPS不支持VBA,希望有会js语言的朋友帮个忙,谢谢!

引用 皆我百晓生 小程序回复内容作答:
在WPSppt中使用JavaScript宏实现进度条可以通过以下步骤实现:

  1. 打开PPT文档,点击“视图”选项卡,在“编辑宏”中添加一个新的宏。
  2. 在宏代码中,使用JavaScript语法来实现进度条的逻辑。

具体实现:

// 获取当前PPT文档对象
var ppt = Presentation.Current();

// 获取总页数
var totalPages = ppt.Slides.Count;

// 获取PPT宽度
var width = ppt.Width;

// 计算每一页PPT在进度条上的长度
var length = width / totalPages;

// 遍历每一页PPT,创建进度条
for (var i = 1; i <= totalPages; i++) {
  // 获取当前页对象
  var slide = ppt.Slides.Item(i);
  
  // 创建矩形背景板
  var bgShape = slide.Shapes.AddShape(1 /*msoShapeRectangle*/, 0, 0, width, 10);
  bgShape.Fill.ForeColor.RGB = 16777215; // 设置背景颜色为白色

  // 创建进度条
  var progressShape = slide.Shapes.AddShape(1 /*msoShapeRectangle*/, 0, 0, i * length, 10);
  progressShape.Fill.ForeColor.RGB = 255; // 设置进度条颜色为红色
}

// 获取章节标题(可选)
var sections = ppt.SectionTitles;
for (var j = 1; j <= sections.Count; j++) {
  var section = sections.Item(j);
  // 获取每个章节的标题
  var sectionTitle = section.Text;
  // 在进度条上显示章节标题
  // ...
}

注意事项:

  • WPSppt中的JavaScript宏功能是基于对应的COM接口实现的,因此在使用JavaScript开发PPT宏时,只能使用WPS提供的JavaScript API功能,而不能使用浏览器端的JavaScript API。
  • WPSppt中JavaScript宏的支持程度可能不如VBA完善,具体功能和语法请参考WPS提供的官方文档和API文档。

【以下回答由 GPT 生成】

首先,WPSppt中使用JavaScript宏实现进度条需要先打开宏编辑器。 在WPSppt中,JavaScript宏是通过Microsoft Script Editor来实现的,以下是具体的解决方案。

  1. 首先,在WPSppt中打开一个空白的幻灯片,然后按下Alt+F11打开宏编辑器。

  2. 在宏编辑器中,点击“插入”->“模块”,新建一个模块。

  3. 在新建的模块中,编写以下代码:

// 获取ppt总页数
function getTotalPageCount() {
    return IntegrateObj.ActivePresentation.Slides.Count;
}

// 获取ppt宽度
function getPptWidth() {
    return IntegrateObj.ActivePresentation.PageSetup.SlideWidth;
}

// 绘制进度条
function drawProgressBar() {
    var pageCount = getTotalPageCount();
    var pptWidth = getPptWidth();
    var progressBarHeight = 10; // 进度条的高度
    var progressBarWidth = pptWidth / pageCount; // 进度条的宽度

    // 获取进度条插入的位置
    var slide = IntegrateObj.ActiveWindow.View.Slide;

    // 清除之前的进度条
    slide.Shapes.Range(Array("ProgressBarBackground", "ProgressBar")).Delete();

    // 绘制进度条背景板
    var progressBarBackground = slide.Shapes.AddShape(1, 0, 0, pptWidth, progressBarHeight);
    progressBarBackground.Name = "ProgressBarBackground";
    progressBarBackground.Fill.ForeColor.RGB = 16777215; // 白色

    // 绘制当前进度条
    var currentProgress = slide.SlideIndex * progressBarWidth;
    var progressBar = slide.Shapes.AddShape(1, 0, 0, currentProgress, progressBarHeight);
    progressBar.Name = "ProgressBar";
    progressBar.Fill.ForeColor.RGB = 255; // 红色
}
  1. 编写完代码后,点击菜单栏的“文件”->“保存”,保存宏文件。

  2. 关闭宏编辑器。

  3. 点击WPSppt的“视图”->“幻灯片浏览”,切换到幻灯片浏览模式。

  4. 在幻灯片浏览模式中,按下Alt+F8打开宏对话框,选择刚才创建的宏文件,点击运行。

以上代码已经实现了在幻灯片浏览模式中绘制进度条的功能。你可以根据需要自行调整进度条的样式和位置。

关于章节标题,WPS提供了Slides对象的SectionTitle属性可以获取幻灯片的章节标题,你可以将获取的章节标题显示在进度条中,具体代码如下:

// 获取章节标题
function getSectionTitle(slideIndex) {
    return IntegrateObj.ActivePresentation.Slides(slideIndex).SectionTitle;
}

// 绘制显示章节标题的文本框
function drawSectionTitleTextBox() {
    var progressBarBackground = slide.Shapes("ProgressBarBackground");
    var progressBarLeft = progressBarBackground.Left;
    var progressBarTop = progressBarBackground.Top - 20; // 20为文本框与进度条之间的间距

    // 清除之前的章节标题文本框
    slide.Shapes.Range(Array("SectionTitleTextBox")).Delete();

    // 获取当前幻灯片的章节标题
    var sectionTitle = getSectionTitle(slide.SlideIndex);

    // 绘制章节标题文本框
    var sectionTitleTextBox = slide.Shapes.AddTextbox(1, progressBarLeft, progressBarTop, 100, 20)
    sectionTitleTextBox.Name = "SectionTitleTextBox";
    sectionTitleTextBox.TextFrame.TextRange.Text = sectionTitle;
}

在drawProgressBar函数中,添加以下代码:

drawSectionTitleTextBox();

这样就可以在进度条上显示当前章节的标题了。

以上就是在WPSppt中使用JavaScript宏实现进度条的具体解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^