运行宏来自动压缩word中插入的所有图片

 

扫描的图片插入word中太大了,影响网络传输,手工压缩的话,又不大方便,想了下办法,通过宏来操作比较可行,网上找了些代码,测试通过。

 

Sub CompressPic()	'压缩word中嵌入的所有图片,

SendKeys "w", False
SendKeys "{ENTER}", False
Word.CommandBars("Picture").FindControl(ID:=6382).Execute

End Sub


将以上代码拷贝到word宏中执行即可实现自动压缩所有图片的功能。但是这样还不够智能,不知道什么叫“宏”的人,你让他运行,他啥也不懂,那怎么办?

好办,在关闭word的时候让它自动执行这段宏,咋整?

网上搜了些资料,整理如下:

 

通过为一个宏赋予某个特殊的名称,就可在执行某项操作(例如启动 Word 或打开文档)时自动运行宏。Word 将下列名称识别为自动宏,或称
“auto”宏。

AutoExec:启动 Word 或加载全局模板时
AutoNew:每次新建文档时
AutoOpen:每次打开已有文档时
AutoClose:每次关闭文档时
AutoExit:退出 Word 或卸载全局模板时
当以下条件之一为真时,将识别代码模块中的自动宏。
* 模块在自动宏(如 AutoExec)之后命名,并且包含一个名为“Main”的过程。 
* 任何模块中的过程在自动宏之后命名。 

与其他宏一样,自动宏也可以保存于 Normal 模板、其他模板或文档中。要让自动宏运行,它必须位于活动文档的 Normal 模板中,或活动文档
选用的模板中。

唯一例外的是 AutoExec 宏,它只有存储于以下位置时才可自动运行:Normal 模板、通过“模板和加载项”对话框全局加载的模板、或由
“Startup”文件夹指定的文件夹中的全局模板。

在命名冲突的情况下(多个自动宏名相同),Word 将运行上下文中最近的自动宏。例如,如果同时在文档及其附加的模板中创建了 AutoClose 
宏,则仅执行文档中的自动宏。如果在 Normal 模板中创建了 AutoNew 宏,只有当文档或其附加模板中没有名为 AutoNew 的宏时,该自动宏才
能运行。

注:按住 Shift 可以终止自动宏的运行。例如,基于包含 AutoNew 宏的模板新建文档时,按住 Shift 可终止 AutoNew 宏的运行。方法是:按
住 Shift,单击(“文件”菜单)“新建”对话框中的“确定”按钮,并在显示新文档前持续按住 Shift。如果运行一个宏时有可能触发自动
宏,(这种情况,我没遇过!)可用下列指令终止自动宏的运行:WordBasic.DisableAutoMacros


 所以,要想在word关闭时,自动运行上面那段“压缩图片”宏,只需要把宏名称由“CompressPic”改为“AutoClose”即可。以上代码测试通过,可用。

你可能感兴趣的:(其他)