提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
使用办公软件做重复性的操作简直是浪费生命,此处记录如何自己摸索编写工作中需要的宏代码。(个人纯小白,比只会写print(‘hello word’)强那么一丝丝儿)
一、目标任务
1.现状
我的目标是将Word文档中 所有 格式不对的表格,先按内容调整,再按窗口调整,再调整行高、字体。
2.结果
最终达成如下截图的格式
3.参考文章
https://blog.csdn.net/jiciqiang/article/details/134653657
三、JS宏代码
1.最终代码
以下代码就可以实现我要的功能
function 批量修改表格样式(){
// 获取表格对象
const TableObj = ActiveDocument.Tables;
// 循环选中所有表格
for(let i = 1; i <= TableObj.Count; i++){
TableObj.Item(i).AutoFitBehavior(wdAutoFitContent);//对每个表格按内容调整
TableObj.Item(i).AutoFitBehavior(wdAutoFitWindow);//按窗口调整
// 选择当前表格内容
TableObj.Item(i).Select();//其实我不懂
Selection.Font.Name = "微软雅黑";//修改字体
(obj=>{
obj.Size = 7.500000;
obj.SizeBi = 7.500000;
})(Selection.Font);//此处((Selection.Font))不懂什么意思,但是得有!!!
(obj=>{
obj.HeightRule = wdRowHeightAtLeast;//这段应该是调整行高为0.5cm的
obj.Height = 14.173115;
obj.AllowBreakAcrossPages = -1;
})(Selection.Cells);//此处((Selection.Cellst))是我自己改的
Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter;
(obj=>{
obj.Alignment = wdAlignRowLeft;
obj.WrapAroundText = 1;
obj.LeftIndent = 0;
})(Selection.Cells);//此处((Selection.Cellst))也是我改的
}
}
2.如何编辑宏
如何编辑宏,请看参考文章。
3.如何实现自己想要的功能
录制宏,因为只是测试性质的,所以保存在当前文档就行。
录制宏后,直接对表格进行操作就可以了
录制完毕后,查看代码
需要的代码在最下面,上面是一堆用不到的selection.range.wholestory()
4.代码解析
//段落1
(obj=>{
obj.HeightRule = wdRowHeightAtLeast;//这些obj都看不懂,不重要,复制下来就行
obj.Height = 14.173115;
obj.AllowBreakAcrossPages = -1;
})(ActiveDocument.Range(37, 594).Rows);
//此处ActiveDocument.Range(37, 594).Rows是选中的表格索引,每个表格所在位置不同,要修改!修改成什么?看最后的注释
//段落2
Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter;
(obj=>{
obj.Alignment = wdAlignRowLeft;
obj.WrapAroundText = 0;
obj.LeftIndent = 0;
})(ActiveDocument.Range(37, 594).Rows);//同上,
//段落3
Selection.Font.Name = "微软雅黑";
(obj=>{
obj.Size = 6.500000;
obj.SizeBi = 6.500000;
})(Selection.Font);//我发现此处的Selection.Font 与这段的开头Selection.Font.Name = "微软雅黑"
//是一样的,所以对前面两段做了同样的修改,将ActiveDocument.Range(37, 594).Rows 改成Selection.Cells,结果运行成功!
//至于具体是什么原因 我也不知道
4.将宏适配至所有文档
将写好的宏代码 复制到Normal.dotm下就可以了
总结
写JS宏可以通过录制宏作为参考来写,当然我是先去了解的pywin32才来写的宏 (pywin32可以在B站上搜索一下,目前只有“34号大块”在讲一些基础内容)