有时候我们需要对文档表格进行规范的格式处理,一个两个的时候情况还好,但是有成百上千个的时候怎么办呢~当然是—— (交给实习生啦)
是的我就是那个倒霉实习生,于是,给大家分享一下解决方法,利用wps宏工具一键操作。期间参考了其他友友们的帖子,十分感谢!
表格对齐
/**
* 表格对齐
*/
function Table_align()
{
let count = Application.ActiveDocument.Tables.Count;
for(let i = 1 ; i <= count ; i++){
//按窗口调整表格
ActiveDocument.Tables.Item(i).AutoFitBehavior(wdAutoFitWindow);
ActiveDocument.Tables.Item(i).Select();
//单元格文本垂直居中对齐
(obj=>{
obj.Cells.VerticalAlignment = wdCellAlignVerticalCenter;
obj.ParagraphFormat.Alignment = wdAlignParagraphCenter;
})(Selection);
}
Debug.Print("表格对齐完成");
}
字体设置
/**
* 字体设置
*/
function Table_font() //改变字体颜色/样式/大小/高亮
{
let count = Application.ActiveDocument.Tables.Count;
for(let i = 1 ; i <= count ; i++){
ActiveDocument.Tables.Item(i).Select();
//表格底纹
Selection.Cells.Shading.Texture = wdTextureNone;
//高亮显示
Selection.Range.HighlightColorIndex = wdNoHighlight;
//边框
(obj=>{
obj.EnableFirstPageInSection = true;
obj.EnableOtherPagesInSection = true;
obj.ApplyPageBordersToAllSections();
})(ActiveDocument.Sections.Item(1).Borders);
//字体格式
ActiveDocument.Tables.Item(i).Select();
(obj=>{
obj.FontStyle = "宋体";
obj.FontStyle = "Times New Roma";
obj.Size = 10.5;//即小五
obj.Color = RGB(0,0,0);
obj.Underline = wdUnderlineNone;
obj.EmphasisMark = wdEmphasisMarkNone;
obj.Hidden = 0;
obj.Shadow = 0;
obj.Outline = 0;
obj.Emboss = 0;
obj.Engrave = 0;
obj.Scaling = 100;
})(Selection.Font);
}
Debug.Print("字体设置完成");
}
首行格式化
/*首行格式化*/
function Table_row1()
{
Console.clear();
let count = Application.ActiveDocument.Tables.Count;
for(let i = 1 ; i <= count ; i++){
let table = ActiveDocument.Tables.Item(i);
//判断是否单元格跨行
let rowCount = table.Rows.Count;
let rowFirst = table.Rows.First;
try{
let rowContent = table.Rows.Item(1);
//首行背景颜色 wdColorGray30
rowFirst.Cells.Shading.BackgroundPatternColor =true;
// 重复标题
rowFirst.HeadingFormat = true;
//字体加粗
rowFirst.Select();
(obj=>{
obj.Bold = -1;
obj.BoldBi = -1;
})(Selection.Font);
}catch(error){
//如果遇到跨行情况,表格高亮显示,手动判断
ActiveDocument.Tables.Item(i).Select();
Selection.Range.HighlightColorIndex = 7;
Debug.Print("表",i,"异常");
}
}
Debug.Print("首行格式化完成");
注意: 有几个问题没有解决,欢迎大佬们讨论并给点建议
- wps为什么不能用vba语言,交给ai生成的代码都运行不了
-
wps有vba模式,需要切换VB环境(还没尝试)
- 首行格式化的时候会遇到单元格合并的情况,会报错,我是让高亮显示人工解决,有什么方法能够判断吗
- wps的excel操作中我想对表格筛选后,选择筛选后的内容某一行(例如:筛选1班后选择第4的同学,筛选2班也要此时第4行的同学)怎么样能够固定选中当前页面的固定行
-
每次定位单元格的行row,用Row(row+x)
- wps宏编辑器调试总是没有错误提示和修改,感觉不太好用,有没有好用的呀
-
快捷键F7(调试),F11(逐语句调试)
这个目的是让大家节省一些机械操作的重复时间,省下来有更多的休息和空闲时间,可以用来看看书摸摸鱼提升一下自己,不许用来内卷,坏!!