ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 雨雪霏霏

[求助]设置自选图形的默认效果及画布增删

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-17 06:18 | 显示全部楼层
Sub MySub()
'
指定快捷键CTRL+0(数字小键盘)
'
根据不同的命令,进行不同的设置
    Call mySet(F)
    Me.Saved = True
End Sub
'----------------------
Sub SetDrawingDefaults()
'
修改Word命令,此代码用于右键中的设置自选图形默认效果
'
该代码基于将当前所选图形格式应于本文档(加载项)中并储存起来.然后指定图形格式
'
应用于本文档中,再设置为默认格式
    Dim myShape As Shape, shType As MsoShapeType
    Dim AutoType As MsoAutoShapeType
    On Error GoTo ErrHandle
    Me.Shapes("mySetShapeDefault").Delete
    With Selection.ShapeRange(1)
        shType = .Type
        .SetShapesDefaultProperties
        .PickUp
        Select Case shType
        Case msoAutoShape
            AutoType = .AutoShapeType
            Select Case AutoType
            Case msoShapeFlowchartAlternateProcess
                Set myShape = Me.Shapes.AddShape(msoShapeFlowchartAlternateProcess, 0, 0, 0, 0)
            Case msoShapeFlowchartProcess
                Set myShape = Me.Shapes.AddShape(msoShapeFlowchartProcess, 0, 0, 0, 0)
            Case msoShapeMixed
                Set myShape = Me.Shapes.AddShape(msoShapeRectangle, 0, 0, 0, 0)
            Case msoShapeOval
                Set myShape = Me.Shapes.AddShape(msoShapeOval, 0, 0, 0, 0)
            Case Else
                Set myShape = Me.Shapes.AddShape(msoShapeRectangle, 0, 0, 0, 0)
            End Select
        Case msoLine
            Set myShape = Me.Shapes.AddLine(0, 0, 0, 0)
        Case msoTextBox
            Set myShape = Me.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 0, 0)
        End Select
        myShape.Name = "mySetShapeDefault"
        myShape.Apply
        Me.Save
    End With
    Exit Sub
ErrHandle:
    myMsg = "
出错的过程名为:SetDrawingDefaults" & vbCrLf
    myMsg = myMsg & Now & "
程序运行中发现错误:" & vbCrLf & "错误号:" & Err.Number & ",出错原因为:" & Err.Description
    Err.Clear
    Call HandleError
End Sub
'----------------------

TA的精华主题

TA的得分主题

发表于 2006-8-17 06:18 | 显示全部楼层
Sub ShowDialogbywdDialogFormatDrawingObject()
'
该对话框对画布中的图形将出错.
    Dim myDialog As Dialog, N As String
    On Error GoTo ErrHandle
    N = Word.CommandBars.ActionControl.Caption
    Set myDialog = Word.Dialogs(wdDialogFormatDrawingObject)
    With myDialog
        Select Case N
        Case "
线条与颜色"
            .DefaultTab = 1200000
        Case "
大小"
            .DefaultTab = 1200001
        Case "
版式"
            .DefaultTab = 1200002
        Case "
文本框"
            .DefaultTab = 1200005
        End Select
        .Show
    End With
    Exit Sub
ErrHandle:
    myMsg = "
出错的过程名为:ShowDialogbywdDialogFormatDrawingObject" & vbCrLf
    myMsg = myMsg & Now & "
程序运行中发现错误:" & vbCrLf & "错误号:" & Err.Number & ",出错原因为:" & Err.Description
    Err.Clear
    Call HandleError
End Sub
'----------------------
Sub HandleError()
    MsgBox myMsg, vbExclamation, msgTitle
    If MsgBox("
是否需要发送错误报告?", vbQuestion + vbYesNo, msgTitle) = vbYes Then MailToAuthor
End Sub
'----------------------
Sub MailToAuthor()
'
错误报告到作者
    Dim ShouRouMail1 As String, ShouRouMail2 As String
    On Error Resume Next
    ShouRouMail1 = "shourou@ExcelHome.net"
    ShouRouMail2 = "shourou_8@hotmail.com"
    ThisDocument.FollowHyperlink _
            "MailTo:" & ShouRouMail1 & "?Subject=Error Report" & "&CC=" & ShouRouMail2 & _
                      "&Body=" & msgTitle & " Find These Error:" & myMsg
End Sub
'----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-27 23:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

8月17日版本 测试报告

QUOTE:
以下是引用守柔在2006-8-17 6:13:46的发言:

祝雨兄早日回家!

以下文档请解压于C:\Documents and Settings\UserNameApplication Data\Microsoft\Word\STARTUP文件夹中,将自动成为加载项,也可作为普通模板(非此STARTUP文件夹中,使用工具/模板和加载项加载之)

 请再行测试(我试过几次了,有些问题在代码中我有交待,Word对于画布,还是不支持,一时找不到更好的方法)

谢谢老大牵念!回来两三天了,又碰上网络不正常,今天才能好好回帖,劳老大久等了!

老大这次的模板,把两个文件结合在一起,便于成为加载项或普通模板,为小弟考虑得实在周到!使用起来,是越来越顺手了!对于“历史性突破”——在画布里可以使用“一键通”,小弟万分感激:从此,小弟是可以从低级重复劳动里解脱了!往日一个小时做的工作,现在可以十分钟之内做完了!老大是救我脱离了泥潭啊!

老大自己进行的几次测试,其实已经非常周到,凡小弟现在测试碰到的问题,老大的代码说明文字里都有说到了:

①画布里不支持“对话框”;

②画布里可以使用“一键通”,但其作用只指向最后画的一个图形。比如说已经画了ABCDE五个图形,如果现在选定了B图形,按快捷键,则E图形变成E图形所种模板的特殊效果,而B图形没有任何变化。若是单个或者全部选定ACD三个图形,结果也是如此。另外,如果在画布里没有选定任何图形,按快捷键,同样也是作用于E图形。

有一点值得注意——快捷键总是作用于“最末尾”一个图形,如果删去了E图形,那么,按快捷键之后,则是D图形变化;如果再删去了DC,按快捷键,则作用于B图形。

小弟以前的测试不够细致,今天才发现一个问题:

老大最新的模板(设置为随Word启动的加载项,或设置为普通模板),如果是在一个大文件里使用——目前小弟是在一个150页、大小为3MB的多图(自选图形)文件里测试——在文件的第一页里可以十分流畅使用老大的模板,但在最后一页使用,则每点一个按钮(如“微”或者“双行巨”),都要等四到七秒左右才能使用。每点了一个按钮之后,状态栏上快速显示从第一页到最后一页的页码的变化(“Word正在给……重新分页,第……页。”)。

这个情况在画布里或不在画布里(即“工具→选项→常规→插入自选图形时自动创建画布”勾选或不勾选),都是一样的。

依小弟的猜测,如果文件再加大,达300页、500页的话,估计每点一个按钮之后,都得等十秒二十秒钟才能作图。

不知老大是否有办法改进一下,不管在文件的哪一页,都可以流畅作图?但小弟臆想,这似乎不可能改过来的,如果要改,大概得另辟思路,几乎要“全盘推翻”了!真是这样大劳动量的话,请老大不要再考虑了,小弟作图时耐心等上几秒钟还是可以的。

最后,小弟顺便问一下,老大是否有时间考虑“第二阶段”的问题——画布自由增删的问题?

涉及画布,总让人头痛,小弟觉得这个问题不那么简单,尤其是当发现一个“大图形”哪里不足时,要为之新增一个画布以便于在画布里进行“取消组合”后进行修改,这里的要保证这个新增的画布与原来的“大图形”大小一样,其实十分困难。

当然,取其最终目的,即在修改完成之后,还是要将画布里的图形全部组合成“大图形”,剪切大图形,删除画布,粘贴大图形,设版式为“嵌入式”,这其中是有“删除画布”操作的,那么,为“大图形”新增画布倒也无所谓大小一定得与“大图形”一样了。——小弟当初设想为“大图形”新增的画布一定要与“大图形”一般大小,是觉得有时需要为某个“大图形”保留着所在的画布,而不影响整个文档的版面。

一个问题,竟拖累老大20天时间,真是罪过!感激之语,多已寡味,老大厚待之恩,小弟难报啊!

[此贴子已经被作者于2006-8-27 23:06:18编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-28 06:49 | 显示全部楼层

关于一键通的重复作用问题,本来我是预留的善意BGU,也就是当再次按下该快捷键(或者运行该过程时),自动重复上一次操作(相当于F4吧),但对于画布而言,是一个BUG,我在代码中已经声明了。

取消重复作用,可添加如下两句代码(F=0)

Sub mySet(W As Byte)

……

           End Select
        F=0
        End Select
    End With
    Exit Sub
ErrHandle:
    myMsg = "
出错的过程名为:mySet" & vbCrLf
    myMsg = myMsg & Now & "
程序运行中发现错误:" & vbCrLf & "错误号:" & Err.Number & ",出错原因为:" & Err.Description
    Err.Clear

    F=0
    Call HandleError
End Sub

从上述我的代码的解释中,雨兄其实应该清晰地看到我的无奈,WORD目前我觉得是没有支持对于画布的二次开发,我查找了MSDN中的相关资料,也没有相关代码。很简单,哪怕是返回画布中的一个所选图形,代码中都没有能够成功进行,WORD始终返回的是画布本身而非画布中的所选图形,对象既失,编程从何说起,因此,画布的处理,我觉得我是无能为力,目前的研究和开发,我只能做到这一步了,也许以后Word会逐步开放此功能,或者你我重新找到新的方法,但目前,我觉得可能性很小。

鉴于此,我想,把画布的研发让时间来解决吧。

对于“画布增删”,你画布会缩放吗?假如画布为10*10,画布中的图形组合后才5*5,那么,画布缩放吗(完全适合组合图形的外部尺寸)?如果不缩放,则不可能做到。

TA的精华主题

TA的得分主题

发表于 2006-8-28 09:43 | 显示全部楼层

找一句微软MSDN的段话:

VBA 在 Office 开发人员工具集中处于什么位置?最初引入 VBA 是为了支持非专业开发,即供那些需要扩展基本 Office 功能集,以便提供更多特定于域的解决方案的高级用户(其自己领域内的专业人员,但并不一定是软件开发领域内的专业人员)。其目的绝不是用于高度复杂的专业解决方案,但由于缺乏合适的替代工具,因此它已被用于这种用途。Visual Studio Tools for Office 则与此相反,它是一种专业开发工具,为 Office 提供了 Visual Studio 和受管开发所具有的完整的强大功能。

当然,VBA 和 Visual Studio Tools for Office 可以共存,并且通过这两种技术构建的解决方案类型之间存在着相当程度的重叠。对于许多解决方案,您可以使用任意一种技术,甚至可以同时使用这两种技术(不过这一方法有可能限制在随着时间的推移要从 VBA 进行迁移的过渡项目)。

Visual Studio Tools for Office 理所当然地占据了高端,并向下扩展到低端,但它不提供宏录制功能。这也是 VBA 仍然充当基于用户交互的非专业解决方案的唯一工具的领域之一。同样,理想的情况是一个工具集满足所有用途。在这种想法的驱动下,Microsoft 正在仔细研究这一问题,并考虑了多种使用 Visual Studio Tools for Office 来实现 VBA 的低端宏录制功能的方法。

[此贴子已经被作者于2006-8-28 9:46:07编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-28 10:31 | 显示全部楼层

谢谢老大、孔兄对小弟的“终极关爱”

谢谢孔兄随时随地给小弟最好吃的!对那片崭新的天地,小弟无限向往!

呵呵,老大又是一番详尽陈述呢!

感谢老大为了小弟的问题穷尽了Word画布的功能探索!这一番深入研究,害老大牺牲了太多精力与时间!小弟想来,这大概也是老大任Word版主以来首次如此彻底地帮一个兄弟吧!真正把小弟送到“西天极乐世界”了!

跟一点也不懂VBA的小弟论述Word中精深的内容,老大确实是在对牛弹琴!即便老大花了大力气在代码中一一加了中文说明,小弟也还是无法全部领略老大在整个编程中的奇思神想!小弟之不敏,老大之耐心,强烈对比,也算Word版块一大风景了!

感谢老大陈述了“取消重复作用”问题并新增了编码!小弟将编码加入了模板中,测试的结果的跟昨天一样,还真有些不知道老大的这个“重复作用”的具体所指是什么。

这里需要补充说明一下——小弟43楼的表述有些不当,也就是段首为“②”的内容,不能算是“需要解决的问题”,应该把它看作是老大模板的“功能说明”,对实际操作没有任何的负面影响。在画布里快捷键总是指向“最末尾”的一个图形,这也不能算是BUG,属于完全正常的功能。只要小弟在画布里每新增一个图形,马上按一次快捷键,就能够轻松做好图的。这在老大21楼的操作录像里已经有示范了(不同的只是小弟是在画布里操作)。

小弟43楼里提出的关于第一阶段的测试,其实只有一个问题——点击各图形按钮(如“微”“双行巨”)之后出现的“延迟”如何免去?在小文件里,可以像“绘图工具栏”一般流畅地使用老大的模板,一点按钮,便可作图;在大文件里,则随着页数的增加,点老大模板的按钮之后会出现越来越久的“延迟”(在等待着Word“重新分页”呢),比如在文件的第150页作图,点“微”按钮之后,要等五秒钟才能在画布里(或者不在画布里)作“微”格式的图形,再点“双行巨”按钮,也得等五秒之后才可画出“双行巨”格式的图形。

这个问题出现,小弟的猜想——当然,纯属瞎猜——可能是老大的编码中有什么“遍历文档”的地方,所以每次点图形按钮之后都会“重新分页”,导致“延迟”。

对于第二个阶段的问题,亦即画布自由增删的问题,看得出老大已经作了很多尝试了!小弟也是在老大说了之后,才发现画布确实无法在只存在单个图形的情况下使用“调整”按钮(即完全适合组合图形的外部尺寸)的。只有在画布里存在两个以上图形的情况下,才可以点按“绘图画布”浮动工具栏上的“调整”按钮。

画布缩放的问题,能不能这样解决呢——即不把画布里的所有图形组合成一个“大图形”,而是让它们全都独立,如此,保证画布里有两个以上的图形,就可以使用“调整”按钮的功能了。当然,这一点,用VBA做起来并不轻巧,只是小弟的“聊发此想”,老大笑话了!

呵呵,老大最后一句“如果不缩放,则不可能做到”语气极为肯定,小弟有些不敢再想了。

不过,还是有这样的想法:如果“缩放”问题不能解决,一定会影响到“增加画布”“删除画布”吗?亦即小弟如果纯粹是想把一个“大图形”背后的画布删去而保留“大图形”,或者为一个已经是“嵌入型”的“大图形”增加一个画布,而不考虑画布的大小问题,也不能实现吗?

当然,“删除画布”实现起来应该简单一些,其实相当于录制宏的过程——“剪切大图形→选定、删除画布→粘贴大图形→设置格式为‘嵌入型’”,用VBA则麻烦一些。

而“新增画布”,大概无法用VBA来实现。确实,这里头无可避免地要考虑到“缩放问题”——在勾选了“工具→选项→常规→插入自选图形时自动创建画布”的情况下,如果新建一个文档,不作页面设置,点击“绘图工具栏”上的按钮时,文档中会出现一个画布,其大小约为15cm×8.5cm,但假若我文档中已经设为“嵌入型”的“大图形”是16cm×16cm的话,根本无法用VBA为之智能新增画布的。

所以,似乎只能这样发问了:不考虑画布缩放问题,只是想“删除画布”,用VBA可以实现吗?请老大指点!

TA的精华主题

TA的得分主题

发表于 2006-8-29 05:17 | 显示全部楼层

To 雨兄:

可能由于昨天时间上比较匆忙,没有完全读懂你的问题,也有可能你也没有看明白代码中的解释,补充如下:

关于画布,Word中其实不支持画布的二次开发,因此,程序无法捕捉用户所选画布中的图形,也就是无法将相关设置直接作用于用户所选的画布中的图形上,那么,我们的这个代码是如何来处理这个问题的呢?方法只有一个,那就是,该如何最大可能就是刚绘制的新图形,也就是所谓的最后一个图形(本画布中),没有其他办法。所以,当在画布中新增了C图形后,如果你选定了D图形,按下“一键通”后,它仍然用用于C图形,Word VBA 无法识别你的选定图形。

自动后台分页功能,在我们的代码中,其实没有涉及到遍历图形的问题,但在新增图形时,如果以画布形式(画布的尺寸是固定的,尽管其中的图形是以000的尺寸绘制)出现,则应该会引起文档重新分页,由于我目前无法从中测试,只是推测,故以下,可以通过以下两种方法进行处理(也可能需要结合两种方法)

FormatSetUp(F As Byte)过程运行时,关闭Word的后台分页功能,结束代码前恢复后台分页。

Word.Options.Pagination = False

FormatSetUp(F As Byte)过程运行时,关闭画布创建功能,在结束代码前恢复。

Word.Options.AutoCreateNewDrawings = False

关于画布的增删:

实际上我的所说,最关键的问题在于图片的定位问题,也就是说如果原来画布的位置(左和上)与内部图形的位置(最终只能出现一个位置)的协调问题,我们先把它放一下,以下代码为删除画布,你测试一下并反馈一下运行后的问题:

Option Explicit

Sub DelCanvas()

    Dim shpCanvas As Shape

    Dim shpCanvasShapes As CanvasShapes

    With Selection

        If .Type = wdSelectionShape Then    '如果所选的是图形的话

            If .ShapeRange(1).Type = msoCanvas Then    '如果所选图形是画布(画布中的某个图形)

                Set shpCanvas = .ShapeRange(1)

                Set shpCanvasShapes = shpCanvas.CanvasItems

                shpCanvasShapes.SelectAll

                .Cut

                .Delete

                .Paste

            End If

        End If

    End With

End Sub

也谢谢Konggs的支持。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-29 15:47 | 显示全部楼层

延迟现象、画布删除测试报告(1)

  谢谢老大详解!

  昨天小弟应该是大致看懂老大的注释了,“一键通的重复作用”是小弟把它误列在了“问题”中了,害老大又花了不少时间解释!它不能算是问题,在当下的Word版本中,能于画布的“最后一个图形”中应用“一键通”功能,老大已经做到最好了!——呵呵,或许像如意版主说的,老大从来写东西都极“精炼”,往往是三言两语便解决一个难题,小弟悟性极低,所以对老大的精确的用语(“重复作用”)一时拿不定,又不敢不懂装懂(老大的每一句话,小弟都觉得里头玄机无穷),所以只好再问了!

  

  以下是小弟今天的测试情况: 

  一、后台分页。

  小弟瞎弄了半天,将老大的新代码引入了图形模板中,大概是小弟又不知如何正确套用吧,测试的结果跟以往没有区别。

  今天小弟多番测试,发现在其他任何文档、哪怕是大文档中,也不会出现小弟所说的延迟现象,只有在小弟的目前正在操作的大型文档中存在这个问题——呵呵,难为老大去为这个问题“猜想”了!现在上传样件,请老大诊断,究竟是小弟的文档哪儿出了问题,或者还是可以在老大的图形模板中进行改进。

  tlRd0XIV.rar (81.71 KB, 下载次数: 17)

  请老大留意,小弟的文档比这个大得多,延迟现象在样件中并不明显,老大不妨将在样件中进行“全选→复制→Ctrl+End→粘贴→粘贴→粘贴→粘贴……”,如果文档达到了200页以及上时,延迟会很明显。——还请老大注意,在文档第一页使用图形模板按钮,都没有延迟现象,但在文档的最后几页使用,则可以看到状态栏上显示着正在重新分页。

  

  二、画布增删。

  1、删除画布。

  使用了老大的删除画布的代码之后,果然奇效顿出!真是服了老大!

  测试之后,觉得还应该请老大在最后加一行代码,使已经删去了画布的图形变为“嵌入型”的。

  也就是说,老大的代码满足了小弟昨天所说的“剪切画布中的‘大图形’→选定、删除画布→粘贴‘大图形’到文档中”这几个步骤,但还差最后一个步骤,那就是还要将这个已经粘贴到了文档中的“大图形”从“浮于文字上方”转换为“嵌入型”。完整的这样的一个过程下来,从外观上看的话,就好像是一个小魔术——有一枚硬币放在一张纸上,我突然把纸一拉,纸消失不见了,但硬币还在原地不动。这其中的奥妙,一是纸消失了,一是硬币位置没有丝毫变动。老大是完成了第一个奥妙了——画布没了,但第二个还没有实现——画布在文档中都是“嵌入型”的,可以和文字融为一体进行各种编辑排版操作(“浮于文字上方”的图形则往往不大“听话”,一旦改动删除了文档的某一个地方,整个编辑好的文档便乱了——小弟的意思是,抽去了画布之后留下的图形,其实也应该是“嵌入型”的,亦即当初画布是属于哪一行的,这图形也应该是在哪一行的——原来画布的右下角外缘都会有一个段落标记,同样要求这抽去了画布的图形右下角外缘也要有一个段落标记。

  老大的代码,还有如下效果:

  ①不管是选定画布中的图形,还是只选定画布,最终画布都会“忽然不见”了,只留下画布中的图形在文档中“浮于文字上方”;

  ②不管画布中是一个图形,还是几个图形,或者是组合全部图形成为一个“大图形”,画布都“忽然消失”而只留下“浮于文字上方”的一个图形或几个图形或“大图形”。

  小弟想,之所以老大没有在代码的最后加进一行有关于“ConvertToInlineShape”的语句,那是因为对于图形(或图片),Word并不积极支持“嵌入型”的操作:可以在Word里选定单个的图形,通过右键“设置自选图形格式→版式”进行任意版式之间的转换;但一旦选定了两个以上的图形,再点右键“设置自选图形格式→版式”,会发现“嵌入型”已经不可用。老大正是很细心地为小弟想了许多,觉得小弟的画布里应该是不只一个图形的,才没有加进最后的“ConvertToInlineShape”的语句。

  需要再向老大交待一下,小弟实际操作中,在删除画布之前,总是先将画布里的图形经过“DrawSelectMultiObjects”命令(即“选中多个对象”)的“全选”进行全选之后,再按“组合”按钮,将它们全部组合在一起,亦即最终画布里其实只有一个“大图形”。

  只要老大考虑到小弟的实际作图情况(画布里“只有一个图形”),小弟猜想,最后的“ConvertToInlineShape”语句应该是很可以轻松加上去的。——只是小弟还没有这悟性,实在不知道加在哪里好!

  呵呵,以前倒是收集了孔兄的代码,只是小弟不知变通,现也一并贴出,请老大指点迷津:

  Sub konggs_转为嵌入型()

  Dim apic As Shape

  Application.ScreenUpdating = False

  For Each apic In ActiveDocument.Shapes

  apic.ConvertToInlineShape  '转换为嵌入型

  Next

  Application.ScreenUpdating = True

  End Sub
[此贴子已经被作者于2006-8-29 15:48:34编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-29 15:51 | 显示全部楼层

延迟现象、画布删除测试报告(2)

  2、增加画布。

  至于老大所说的“最关键的问题在于图片的定位问题,也就是说如果原来画布的位置(左和上)与内部图形的位置(最终只能出现一个位置)的协调问题”,小弟猜想,应该是针对“增加画布”而言。

  “删除画布”看起来像是简单的录制宏的过程(只是Word不支持画布状态下的宏录制),老大已经巧妙解决了。但至于“增加画布”,想来怕也是“不能之事”。即使是哪一天能够在画布状态下录制宏了,问题也无法得到圆满解决。

  小弟实际操作的全过程如下:

  ①剪切文档中需要重新修改的一个“A大图形”;

  ②点按“绘图工具栏”上任何一个作图按钮(比如说“直线”),以在文档中自动出现一个画布;

  ③在画布上随意拖动十字形鼠标指针画出一个图形;

  ④选定、Del这个图形;

  ⑤假如“A大图形”的大小超过了画布大小(每个自动出现的画布都是大小约为15cm×8.5cm),需将画布扩拉到足以轻易容下“A大图形”,不进行扩拉的话,如果“A大图形”是16cm×16cm,则最终不可能会处在画布之中;

  ⑥粘贴“A大图形”于画布中;

  ⑦“取消组合”;

  对分解出来的各个小图形进行设置;

  ⑨“选中多个对象”→“全选”→“组合”;

  ⑩应用老大的“删除画布”宏,将画布删去。

  要用VBA来进行这样的操作,难度在于:

  (1)如何在“A大图形”所在的位置生成一个空画布?

  (2)如何保证这个画布比“A大图形”大(或者一样大),足以容下“A大图形”?

  当然,难题不只是这么些,只是小弟VBA知识太有限,无法想象这其中还有多么大的问题需要费神解决,小弟只会畅想,而把难题全部交给老大。

  呵呵,不知如意版主看到这样的一幕,会如何想——“‘俺佳人’就是跟老大一起写《Word非常接触》,再怎么样使‘川妹辣性子’,也不曾这样虐待过老大,而今你一个小野孩竟然再三再四穷缠老大,实是该上铜烙柱!”

  希望如意版主没看到这个帖子!

TA的精华主题

TA的得分主题

发表于 2006-8-29 19:40 | 显示全部楼层

雨兄:

附件我暂时没下载。

想问一个问题:

画布中的图形是否需要以组合的形式出现,即这些图形最初的形态(未切入画布,这是增加画布的功能)时,以及最终的形态(从画布中剪切下来,这是删除画布的功能),这些图形是组合的吗?还是独立的?

如果有时间,我会在明晨尽快回复。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 12:50 , Processed in 0.046903 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表