如何消除MS Word应用窗口与屏幕边缘间的间隙?
解决Word窗口并排间隙问题的代码修改方案
问题根源
原代码直接将两个窗口的宽度均分为Application.UsableWidth / 2,但Word窗口自带边框(含标题栏、侧边框架),系统会为窗口保留最小边框空间,导致两个窗口总宽度超过可用屏幕宽度,被迫压缩后出现间隙;同时直接使用半宽值可能因小数精度问题引发位置偏移。
需要修改的代码部分
- 调整宽度计算逻辑:
- 第一个窗口的宽度用整数除法取可用宽度的半值,避免小数精度误差
- 第二个窗口的左偏移直接取第一个窗口的实际宽度,确保无缝衔接
- 第二个窗口的宽度设为可用宽度减去第一个窗口的宽度,填满剩余屏幕空间
- 保持高度设置的同时,确保位置无偏移:保留
Top=0的设置,确保窗口顶部贴合屏幕边缘
修改后的完整代码
Sub SplitScreen() ' 定义活动文档和新文档变量 Dim ActiveDoc As Document Dim NewDoc As Document Set ActiveDoc = ActiveDocument ' 创建与活动文档同名并追加"_EN"的新文档 Documents.Add DocumentType:=wdNewBlankDocument Set NewDoc = ActiveDocument NewDoc.SaveAs2 FileName:=Left(ActiveDoc.FullName, InStrRev(ActiveDoc.FullName, ".")) & "EN.docx" ' 设置活动文档窗口的大小和位置 ActiveDoc.ActiveWindow.WindowState = wdWindowStateNormal ActiveDoc.ActiveWindow.Top = 0 ActiveDoc.ActiveWindow.Left = 0 ' 用整数除法设置第一个窗口宽度,避免小数精度问题 ActiveDoc.ActiveWindow.Width = Application.UsableWidth \ 2 ActiveDoc.ActiveWindow.Height = Application.UsableHeight ' 设置新文档窗口的大小和位置 NewDoc.ActiveWindow.WindowState = wdWindowStateNormal NewDoc.ActiveWindow.Top = 0 ' 直接以第一个窗口的宽度作为第二个窗口的左偏移,确保无缝衔接 NewDoc.ActiveWindow.Left = ActiveDoc.ActiveWindow.Width ' 第二个窗口宽度取可用宽度减去第一个窗口的宽度,填满剩余空间 NewDoc.ActiveWindow.Width = Application.UsableWidth - ActiveDoc.ActiveWindow.Width NewDoc.ActiveWindow.Height = Application.UsableHeight End Sub
额外说明
如果仍存在顶部/底部间隙,可尝试将Top值替换为Application.Top,部分系统环境下需要匹配Word应用程序的初始顶部偏移;同时确保未启用系统级的窗口缩放、自动调整功能。
内容的提问来源于stack exchange,提问作者Aibolit
相关产品推荐
相关产品推荐

