• 招聘求职

  • 店面转让

  • 技术问答

  • 同城闲置

  • 软件下载

  • 正品商城

在Power Point中使用宏实现批量修改公式的打印颜色

11002 29

时间:2012-08-25 01:12

[size=4][color=#0070c0][font=微软雅黑] 我想大伙由于工作原因(特别是学校里面)经常会用到power point打印ppt,可是现在很多老师的ppt中都有公式(特别是理科院校),而且公式还着色成了黄色,这样上课时配着蓝色背景,既醒目又看着舒服。 [/font][font=微软雅黑] 不过,他们是舒服了,可是当大家打印的时候才发现,颜色选成了纯黑白,文字倒挺好的,可那些公式打出来都啥样了?灰灰的?浅浅的?有的干脆是空白?什么?黑白不行选彩色?打出来墨粉消耗哗哗的不心疼?好吧,就算您老板财大气粗,可打出来乌七八黑的客户不满意?咋办?手工修改?一份ppt里有无数的公式,为了赚那几毛块把钱,你愿意费那么大的劲?有那闲 么?那有没有自动的批处理呢?找吧,可找遍了power point也没有发现什么内置功能可以批量修改公式颜色(有人知道的话,请不吝赐教);什么?这生意不做总成了吧?不打?在生意如此难做的时代居然把顾客往门外赶?还想不想混下去了?什么?想去揍那制作这ppt的人一顿?客官那可万万使不得!就为这点破事把您那娇贵的老板身躯给掳进去了那可划不来!那你唠叨这半天想说明啥?厉害你去整个办法啊?啊!客官请先喝杯茶消消气,别急,且听小生给您慢慢道来。 [/font][font=微软雅黑] 呵呵,不知大伙有没有,反正鄙人是有过上面经历的,还好最后费尽周折,想到了使用office软件里面所带的VBA,找人编写了一个在PowerPoint中使用的宏,最终解决了这一问题。 [/font][font=微软雅黑] 首先打开一个带公式的ppt文件(最好里面是如上所说的那种,没有的话可自行把公式修改成白色测试),鼠标依次点选工具→宏→宏,如下图: [aattach]65218[/attach] 接着会出现如下图: [aattach]65219[/attach] 在宏名下面那一栏,随便输入字符,点击创建。不过要注意的是,如果你所创建的宏,只想用在现在所打开的这一个ppt文件中的话,可以忽略下面的选项,否则要是想把这个宏用在一起打开的多个ppt文件之中的话,请选择下面的所有打开的演示文稿。点击创建之后,会进入到visual basic中,如下图: [aattach]65220[/attach] 删除模块中现有的所有代码,然后粘贴上去下面的代码: [/font][/color][/size][size=1][color=gray][font=宋体]' VBA cannot passShape into a function, so global var is used[/font][/color][/size][size=1][font=宋体] [color=#B1B100]Public[/color] sh [color=#B1B100]As[/color]Shape [color=gray]' The macro to excute[/color] [color=#B1B100]Sub[/color] ReColor[color=#66CC66]()[/color] [color=#B1B100]Dim[/color] sld [color=#B1B100]As[/color]Slide [color=#B1B100]For[/color] Each sld In ActivePresentation.[color=#66CC66]Slides[/color] [color=#B1B100]For[/color] Each sh In sld.[color=#66CC66]Shapes[/color] [color=#B1B100]Call[/color] ReColorSH [color=#B1B100]Next[/color] [color=#B1B100]Next[/color] [color=#B1B100]End[/color] [color=#B1B100]Sub[/color] [color=#B1B100]Sub[/color] ReColorSH[color=#66CC66]()[/color] [color=#B1B100]Dim[/color] ip [color=#B1B100]As[/color][color=#B1B100]Integer[/color] [color=gray]' point tothe top of the i stack[/color] [color=#B1B100]Dim[/color] sp [color=#B1B100]As[/color][color=#B1B100]Integer[/color] [color=gray]' point tothe top of the shape stack[/color] [color=#B1B100]Dim[/color] istk[color=#66CC66]()[/color][color=#B1B100]As[/color] [color=#B1B100]Integer[/color][color=gray]' the i stack, using dynamic array[/color] [color=#B1B100]Dim[/color] sstk[color=#66CC66]()[/color][color=#B1B100]As[/color] Shape [color=gray]' theShape stack, using dynamic array[/color] [color=#B1B100]Dim[/color] ssize [color=#B1B100]As[/color][color=#B1B100]Integer[/color] [color=gray]' the sizeof both stacks[/color] ssize = [color=#CC66CC]10[/color] [color=#B1B100]ReDim[/color] istk[color=#66CC66]([/color]ssize[color=#66CC66])[/color] [color=#B1B100]ReDim[/color] sstk[color=#66CC66]([/color]ssize[color=#66CC66])[/color] ip = [color=#CC66CC]0[/color] sp = [color=#CC66CC]0[/color] [color=#B1B100]Dim[/color] i [color=#B1B100]As[/color] [color=#B1B100]Integer[/color] L2: [color=#B1B100]If[/color] sh.[color=#B1B100]Type[/color]= msoGroup [color=#B1B100]Then[/color] i = [color=#CC66CC]1[/color] L1: [color=gray]'pushS(sh)[/color] sp = sp + [color=#CC66CC]1[/color] [color=#B1B100]If[/color] sp > ssize [color=#B1B100]Then[/color] ssize = ssize + [color=#CC66CC]1[/color] [color=#B1B100]ReDim[/color] Preserve istk[color=#66CC66]([/color]ssize[color=#66CC66])[/color] [color=#B1B100]ReDim[/color] Preserve sstk[color=#66CC66]([/color]ssize[color=#66CC66])[/color] [color=#B1B100]End[/color] [color=#B1B100]If[/color] [color=#B1B100]Set[/color] sstk[color=#66CC66]([/color]sp[color=#66CC66])[/color] = sh [color=gray]'----------[/color] [color=gray]'pushI (i)[/color] ip = ip + [color=#CC66CC]1[/color] istk[color=#66CC66]([/color]ip[color=#66CC66])[/color]= i [color=gray]'----------[/color] [color=#B1B100]Set[/color] sh = sh.[color=#66CC66]GroupItems([/color]i[color=#66CC66])[/color] [color=#B1B100]GoTo[/color] L2 L3: [color=gray]'popI(i)[/color] i = istk[color=#66CC66]([/color]ip[color=#66CC66])[/color] ip = ip - [color=#CC66CC]1[/color] [color=gray]'----------[/color] [color=gray]'popS(sh)[/color] [color=#B1B100]Set[/color] sh = sstk[color=#66CC66]([/color]sp[color=#66CC66])[/color] sp = sp - [color=#CC66CC]1[/color] [color=gray]'----------[/color] [color=#B1B100]If[/color] i < sh.[color=#66CC66]GroupItems[/color].[color=#B1B100]Count[/color] [color=#B1B100]Then[/color] i = i + [color=#CC66CC]1[/color] [color=#B1B100]GoTo[/color] L1 [color=#B1B100]End[/color] [color=#B1B100]If[/color] [color=#B1B100]ElseIf[/color] sh.[color=#B1B100]Type[/color]= msoEmbeddedOLEObject [color=#B1B100]Then[/color] [color=#B1B100]If[/color] [color=#B1B100]Left[/color][color=#66CC66]([/color]sh.[color=#66CC66]OLEFormat[/color].[color=#66CC66]ProgID[/color], [color=#CC66CC]8[/color][color=#66CC66])[/color] = [color=red]"Equation"[/color][color=#B1B100]Then[/color] sh.[color=#66CC66]BlackWhiteMode[/color] = msoBlackWhiteBlack [color=#B1B100]End[/color] [color=#B1B100]If[/color] [color=#B1B100]End[/color] [color=#B1B100]If[/color] [color=#B1B100]If[/color] ip > [color=#CC66CC]0[/color][color=#B1B100]Then[/color] [color=#B1B100]GoTo[/color]L3 [color=#B1B100]End[/color] [color=#B1B100]Sub[/color][/font][/size] [size=2][color=#0070C0] [size=4][font=微软雅黑] 保存后关闭visual basic,返回PowerPoint,点击工具→宏→宏,选择ReColor,单击运行,如下图: [aattach]65221[/attach] 至此就大功告成了,现在,在打印的时候所有的公式不管什么颜色都会打印出来跟黑白一样的效果了。 [color=#ff0000] 注意,只有在PowerPoint 2003,且打印样式选用纯黑白/灰度时效果才会出现,在PowerPoint 2007的测试中,运行失效。[/color] [color=#ff0000] 补充:有时候当我们在一个ppt文件里面已经设置了宏,但是当我们关闭这个文档再打开想运行宏的时候发现原来的那个宏无法运行了,而且把原来的删除之后再设置也是一样。发现原来在我们设置了一次宏之后,VBA里面的模板下面自动多出了一个"Modulel”模板,原来以为把这个模板删除之后重新新建宏就可以了,但是也还是不行。所以只好新建一个ppt空白文档,把需要打印的ppt全部复制过去,然后在设计→配色方案选择一个带底色的模板,接着再重新设置宏,然后运行就可以了。[/color] 最后,特别感谢网友“Δ”的VBA源代码,鄙人一介文盲,没有他的源代码也就不会有此文的出现,希望本文能对那些为此苦恼的朋友有带来一点用处。 [/font][/size][/color][/size][size=1][color=#0099FF][/color][/size][size=1][/size]

评论

直达楼层
洋溪双泉|发表于:2012-08-25 08:26|举报
沙发 回复
表示没有心情看,你们继续欣赏吧。
中一老怪|发表于:2012-08-25 09:15|举报
板凳 回复
表示直接看不懂啊!
小烂、|发表于:2012-08-25 10:09|举报
好多不懂 [s:35]
仗剑、走天下|发表于:2012-08-25 11:33|举报
楼主 高手也 啊
羡仙|发表于:2012-09-03 13:34|举报
[quote][url=http://www.417628.org/bbs/u.php?username=中一老怪]中一老怪[/url][color=gray]:[/color]表示直接看不懂啊![color=gray] (2012-08-25 09:15) [/color][url=http://www.417628.org/bbs/job.php?action=topost&tid=75412&pid=774674][img]images/back.gif[/img][/url] [/quote] 呵呵。有需要的人能看懂就行。
羡仙|发表于:2012-09-03 13:35|举报
[quote][url=http://www.417628.org/bbs/u.php?username=xiejunjie]xiejunjie[/url][color=gray]:[/color]碰到过,但是用2007的版本基本上都能解决[color=gray] (2012-08-27 11:49) [/color][url=http://www.417628.org/bbs/job.php?action=topost&tid=75412&pid=776944][img]images/back.gif[/img][/url] [/quote] 只要公式是白色或者浅颜色的,2007也是没办法解决的,2010也如此。
明星人物|发表于:2012-09-06 14:33|举报
照着楼主的方法试了两遍,还是没能成功。 还是支持楼主一个
潮水|发表于:2012-11-02 13:36|举报
暂时没有碰到过类似的,学习下
dixotirc|发表于:2013-02-09 15:24|举报
做个记号,下次好找! [img]images/wind/read/sigline.gif[/img] [size=2][url=http://www.baoxian-insurance.com/baoxian/0/106/]重生之妖孽人生[/url][/size]
簩leade头|发表于:2013-02-26 15:27|举报
10楼 回复
表示直接看不懂啊![s:36]

公众号

扫一扫,微信公众号

APP

下载app

TOP

对不起,发布招聘信息,查看求职信息功能只针对论坛VIP开放,请选择办理VIP

如需帮助请在右侧联系我们中联系在线客服或电话我们

开通时长

  • ¥300.00 ¥300.00

    1月

  • ¥750.00 ¥900.00

    3月

  • ¥1400.00 ¥1800.00

    6月

  • ¥2000.00 ¥3600.00

    12月

支付方式

应付金额

¥300.00¥300.00

举报

请点击举报理由

洋溪信息港手机号绑定

洋溪信息港登录

洋溪信息港重置密码

分享

正在与羡仙聊天中

查看更多消息

参与/回复主题

RE:在Power Point中使用宏实现批量修改公式的打印颜色

参与/回复主题

参与/回复

参与/回复