使用宏命令自动调节字符缩放(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使用方法

  1. 打开Word文档。

  2. 按 Alt + F11 打开VBA编辑器。

  3. 在VBA编辑器中,点击 Insert -> Module,插入一个新模块。

  4. 将上述代码粘贴到模块中。

  5. 关闭VBA编辑器,回到Word文档。

  6. 按 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使用方法

  1. 打开Word文档。

  2. 在工具栏(开始插入视图那一栏)找到开发工具,选择“WPS宏编辑器"。

  3. 点击 插入 -> 模块,插入一个新模块。

  4. 将上述代码粘贴到模块中。

  5. 关闭编辑器,回到Word文档。

  6. 使用时点击“运行宏”或打开“WPS宏编辑器"点击“运行”,选择 AdjustParagraphFormatting,然后点击 Run 运行宏。

注意事项

  1. 测试环境为Windows和Linux环境下的WPS,Windows下支持vba,Linux下支持js。

  2. 部分Windows电脑没有VBA环境无法运行宏,请自行搜索VBA支持库进行安装(圈里部分不是灰的才ok)

  3. 席卡纸张大小是20cm*10cm,上下边距各1.5cm,左右边距设为0,请根据注释酌情调节

  4. 字符缩放比例也是自己试出来的,左右不能填太满,有时候在A4的进纸盒内临时打席卡纸时容易偏移

  5. 如果要打的席卡比较多,记得时不时给打印机喘喘气,别给这些老家伙衫玩死了

posted @ 2025-02-11 15:58  一个马怪怪  阅读(156)  评论(0)    收藏  举报