使用宏命令自动调节字符缩放(VBA&JS,制作会议席卡用)
经常筹备会议的盆友都知道,准备会议席卡是比较痛苦的,不仅要排版打印、拆壳装壳,时不时还要修理打印机
其排版过程中为了美观,要使部门名称基本填满席卡纸,则需要根据字数多少调整字符缩放大小
之前估计使用宏命令可以实现自动调节,懒得弄,自己手动搓了几个三~八字不同字体的席卡模板凑合用
现在有deepseek,直接无痛使用VBA、JS,我略加沟通就给我把代码写好了,先看下实现效果
实现效果

VBA代码
Sub AdjustParagraphFormatting()
Dim para As Paragraph
Dim wordCount As Integer
Dim scalePercentage As Integer
Dim paraText As String
' 遍历文档中的每个段落
For Each para In ActiveDocument.Paragraphs
' 居中段落
para.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
' 获取段落文本并去掉段落末尾的换行符
paraText = para.Range.Text
' 设置字体为楷体,大小为150
With para.Range.Font
.Name = "楷体" ' 设置字体为楷体
.Size = 150 ' 设置字体大小为150
End With
' 计算段落的字数(去掉空格和换行符)
wordCount = Len(Trim(paraText))
' 根据字数设置字符缩放比例
Select Case wordCount - 1
Case 2
para.Range.Text = Left(paraText, 1) & " " & Right(paraText, 2) ' 两字插入空格
paraText = para.Range.Text ' 更新段落文本
scalePercentage = 100
Case 3
scalePercentage = 100
Case 4
scalePercentage = 95
Case 5
scalePercentage = 75
Case 6
scalePercentage = 63
Case 7
scalePercentage = 54
Case 8
scalePercentage = 47
Case 9
scalePercentage = 42
Case 10
scalePercentage = 38
Case 11
scalePercentage = 35
Case 12
scalePercentage = 32
Case Else
scalePercentage = 100 ' 默认缩放比例
End Select
' 应用字符缩放
para.Range.Font.Scaling = scalePercentage
Next para
End Sub
VBA使用方法
-
打开Word文档。
-
按
Alt + F11打开VBA编辑器。 -
在VBA编辑器中,点击
Insert->Module,插入一个新模块。 -
将上述代码粘贴到模块中。
-
关闭VBA编辑器,回到Word文档。
-
按
Alt + F8,选择AdjustParagraphFormatting,然后点击Run运行宏。
[这段也是直接抄deepseek的:]
JS代码
function AdjustParagraphFormatting() {
// 获取当前文档
const doc = Application.ActiveDocument;
// 遍历文档中的每个段落
for (let i = 1; i <= doc.Paragraphs.Count; i++) {
const para = doc.Paragraphs.Item(i);
const range = para.Range;
// 居中段落
para.Alignment = wdAlignParagraphCenter;
// 获取段落文本
let paraText = range.Text;
// 设置字体为楷体,大小为150
range.Font.Name = "楷体"; range.Font.Size = 150;
// 计算段落的字数(去掉空格和换行符)
const wordCount = paraText.trim().replace(/\r/g, "").length;
// 根据字数设置字符缩放比例
let scalePercentage;
switch (wordCount) {
case 2:
// 如果段落是2个字,在中间添加2个空格
paraText = paraText[0] + " " + paraText[1]+ paraText[2];
range.Text = paraText; // 更新段落文本
scalePercentage = 100;
break;
case 3:
scalePercentage = 100;
break;
case 4:
scalePercentage = 95;
break;
case 5:
scalePercentage = 75;
break;
case 6:
scalePercentage = 63;
break;
case 7:
scalePercentage = 54;
break;
case 8:
scalePercentage = 47;
break;
case 9:
scalePercentage = 42;
break;
case 10:
scalePercentage = 38;
break;
case 11:
scalePercentage = 35;
break;
case 12:
scalePercentage = 32;
break;
default:
scalePercentage = 100; // 默认缩放比例
}
// 应用字符缩放
range.Font.Scaling = scalePercentage;
}
}
JS使用方法
-
打开Word文档。
-
在工具栏(开始插入视图那一栏)找到开发工具,选择“WPS宏编辑器"。
-
点击
插入->模块,插入一个新模块。 -
将上述代码粘贴到模块中。
-
关闭编辑器,回到Word文档。
-
使用时点击“运行宏”或打开“WPS宏编辑器"点击“运行”,选择
AdjustParagraphFormatting,然后点击Run运行宏。
注意事项
-
测试环境为Windows和Linux环境下的WPS,Windows下支持vba,Linux下支持js。
-
部分Windows电脑没有VBA环境无法运行宏,请自行搜索VBA支持库进行安装(圈里部分不是灰的才ok)
![]()
-
席卡纸张大小是20cm*10cm,上下边距各1.5cm,左右边距设为0,请根据注释酌情调节
-
字符缩放比例也是自己试出来的,左右不能填太满,有时候在A4的进纸盒内临时打席卡纸时容易偏移
-
如果要打的席卡比较多,记得时不时给打印机喘喘气,别给这些老家伙衫玩死了


浙公网安备 33010602011771号