WORD2010绘制图形不能框选和对齐解决办法

时间:2021-08-23 06:22:44


一、问题描述

在word2003中可以使用鼠标框选多个图形,可是在word2010中却只能使用ctrl+鼠标一个个点选,非常不便。

如果要实现框选,需要先插入一个画布,再在画布中绘制图形。已经绘制的图形可以粘贴到画布中。

插入画布操作:插入选项卡-->插图命令组-->形状-->新建绘图画布。绘制的画布可以拖动边框调整大小,还可以右键-->设置布局选项-->文字环绕-->浮于文字之上,这样可以使画布突破页边距的设置,甚至放大到页边距之外使画布看不到,感觉比较舒服些。

框选工具在:开始选项卡-->编辑命令组-->选择-->选择对象。


在画布中绘制图形可以框选了,但是发现选中了多个图形以后却不能使用对齐命令(格式选项卡-->排列命令组-->对齐下的:左对齐、右对齐……等等都是灰色的) 。

而不在画布中绘制的图形,却能使用对齐命令。


怎样才能在word2010中实现既能框选又能对齐呢,鱼与熊掌难道不能兼得吗?


二、解决方法

方法一:在PPT2010中绘制图形,两个功能都是可用的,不用画布直接绘制,完后再复制到word2010中。先设置下PPT的页面与word一致(如A4):设置选项卡-->页面设置-->幻灯片大小,在下拉列表中选择,这样可以直观地看到在word中的大小,不会复制后发现太大或太小。

方法二:将文字另存为word97-2003格式,再打开,此时两个功能都可用,也是不用画布直接绘制即可。缺点是如果word2010文档中有其它2003不支持的格式,就会导致文档格式失真。

方法三:使用VBA代码实现对齐功能(仍然需要在画布中才能框选)。这是高人的代码:

Private Sub AlignHorizontal(ARate As Single)
Dim Min, Max, i As Integer
    Min = 32768
    Max = -32768
    For Each AShape In Selection.ChildShapeRange
        If Min > AShape.Left Then
            Min = AShape.Left
        End If
        i = AShape.Left + AShape.Width / 20
        If Max < i Then
            Max = i
        End If
    Next AShape
    For Each AShape In Selection.ChildShapeRange
        AShape.Left = Min * (1 - ARate) + Max * ARate - AShape.Width / 20 * ARate
    Next AShape
End Sub


Private Sub AlignVertical(ARate As Single)
Dim Min, Max, i As Integer
    Min = 32768
    Max = -32768
    For Each AShape In Selection.ChildShapeRange
        If Min > AShape.Top Then
            Min = AShape.Top
        End If
        i = AShape.Top + AShape.Height / 20
        If Max < i Then
            Max = i
        End If
    Next AShape
    For Each AShape In Selection.ChildShapeRange
        AShape.Top = Min * (1 - ARate) + Max * ARate - AShape.Height / 20 * ARate
    Next AShape
End Sub


Private Sub AlignShape(AHorizontal As Boolean, ARate As Single)
    If Selection.ChildShapeRange.Count = 0 Then
        Exit Sub
    End If
    If AHorizontal Then
        AlignHorizontal (ARate)
    Else
        AlignVertical (ARate)
    End If
End Sub


Sub AlignHorizontalLeft()
    AlignShape True, 0
End Sub


Sub AlignHorizontalCenter()
    AlignShape True, 0.5
End Sub


Sub AlignHorizontalRight()
    AlignShape True, 1
End Sub


Sub AlignVerticalTop()
    AlignShape False, 0
End Sub


Sub AlignVerticalMiddle()
    AlignShape False, 0.5
End Sub


Sub AlignVerticalBottom()
    AlignShape False, 1
End Sub


需要将以上代码添加到一个工具按钮上,方便调用。方法如下:

(1)文件菜单-->选项-->自定义功能区-->勾选右侧列表框中的“开发工具”,确定。此时多出一“开发工具”选项卡。(在功能区上点右键也可出现“自定义功能区”,下同)

(2)开发工具选项卡-->代码命令组-->Visual Basic(就是左边第一个按钮),在 Normal上右键,依次选插入-模块,然后将上面代码复制粘贴进来。点击工具栏上磁盘按钮保存。关闭开发工具。

(3)添加一个新建选项卡,以便将代码添加到此按钮。

(当然也可以添加到原有选项卡上,如格式选项卡,方法类似。但我不想影响原有选项卡,且便于找到命令就单独为其新建了一个选项卡)。

文件菜单-->选项-->自定义功能区-->在右侧列表框下点“新建选项卡”按钮,此时列表中多出一个“新建选项卡(自定义)”,其下有一个"新建组(自定义)",分别右键-->重命名,将选项卡命名为"图形对齐",将组命名为"对齐"(名称随你喜欢自定)。

(4)在“从下列位置选择命令”下拉列表框中选择“宏”,此时列出6个宏(Normal.模块1.Align...开头的6个),在右侧列表框中选择刚新建的"对齐"命令组。依次选中6个宏,点“添加”按钮,添加到“对齐”组下面。在刚添加的命令上依次右键-->重命名,其中:AlignVerticalBottom--底端对齐,AlignVerticalMiddle--上下居中,AlignVerticalTop--顶端对齐,AlignHorizontalRight--右对齐,AlignHorizonCenter--左右居中,AlignHorizontalLeft--左对齐。确定退出。

完成。


三、后记

方法三较好地解决了对齐的问题,但是它没有实现平均分布的功能,这不能不说是一大遗憾。

另外,Word2010中貌似没有图形布尔运算的功能,在自定义功能区对话框中的命令里没找到,不知是真没有还是我眼拙没找到。而图形运算功能在PPT2010中是有的。

如果这两个问题解决了,那WORD2010的图形功能就算完美了吧。


原文出处见http://www.docin.com/p-690220754.html,以上是结合我的实践重新整理的。