刚想弄个直尺文档给买不到公制直尺的朋友用,结果搜到的文档全是收费的,搞得我火冒三丈,气不过自己写个!
话不多说,直接上代码:
Sub 画直尺()
Dim x1, x2, y1, y2, i, j, T1
T1 = CentimetersToPoints(0.1)
For i = 0 To 280 '28cm长
x1 = CentimetersToPoints(1 + (i - 1) / 10)
x2 = x1
y1 = CentimetersToPoints(1)
If i Mod 5 = 0 Then
y2 = CentimetersToPoints(1.7)
If i Mod 10 = 0 Then
y2 = CentimetersToPoints(2)
'-------加数值
ActiveDocument.Shapes.AddTextEffect(msoTextEffect1, i / 10, "Times New Roman", 12#, msoFalse, msoFalse, x1 - T1, y2 + T1).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 0, 0)
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.Width = CentimetersToPoints(0.2)
Selection.ShapeRange.Height = CentimetersToPoints(0.4)
' Selection.ShapeRange.IncrementLeft -397.3
' Selection.ShapeRange.IncrementTop -223.8
End If
Else
y2 = CentimetersToPoints(1.4)
End If
ActiveDocument.Shapes.AddLine x1, y1, x2, y2
Next
End Sub
画好的效果如下,A4 纸横向,1 后面的 cm 是手工加上去的,懒得弄代码了。
打印出来和我上学时用的工程制图直尺对比了一下,28厘米长有0.2毫米左右的误差,也就是约有 0.071%的误差,在可接受范围内:
感觉误差来自打印机的机构。
最后,说下使用前注意事项:
画任意直线,先设置直线宽度为 0.1 磅
然后在此直线上点击右键,将其设为默认效果:
因为我懒得再用代码设置线型了。
会用 VBA 的自己复制代码运行即可,就不提供 doc 文档下载了。