想要在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宏实现进度条可以通过以下步骤实现:
具体实现:
// 获取当前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;
// 在进度条上显示章节标题
// ...
}
注意事项:
【以下回答由 GPT 生成】
首先,WPSppt中使用JavaScript宏实现进度条需要先打开宏编辑器。 在WPSppt中,JavaScript宏是通过Microsoft Script Editor来实现的,以下是具体的解决方案。
首先,在WPSppt中打开一个空白的幻灯片,然后按下Alt+F11打开宏编辑器。
在宏编辑器中,点击“插入”->“模块”,新建一个模块。
在新建的模块中,编写以下代码:
// 获取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; // 红色
}
编写完代码后,点击菜单栏的“文件”->“保存”,保存宏文件。
关闭宏编辑器。
点击WPSppt的“视图”->“幻灯片浏览”,切换到幻灯片浏览模式。
在幻灯片浏览模式中,按下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宏实现进度条的具体解决方案。