首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • WORD2007——文本框和线条组合后设置插入位置问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zcsor
    • 等级:
    发表于:2008-06-12 01:39:29 楼主
    简言之,就是把一个Shape对象以插入式这种格式插入到指定位置。

    具体情况如下:(代码使用VB.NET 2008编写,WORD 版本为 2007)
    1、记当前插入符位置为P(X以行为单位,Y以列为单位)
    2、使用Shapes.AddTextbox方法添加2个文本框、AddLine方法添加2条直线到当前插入符位置,分别记为T1,T2,L1,L2
    3、将T1,T2,L1,L2加入数组Array以便组合:
      Dim grp As Word.Shape = WordApp.ActiveDocument.Shapes.Range(Array).Group
    4、设置grp插入(grp.WrapFormatType=wdWrapInline)在前面记录的P位置
    问题出在第3、4步,第3步组合后,grp对象出现在文档开头,怎么才能把这个组合后得到的Shape对象插入到P位置?

    我现在用的方法是得到组合体(grp)并设置为插入式之后,依次进行如下调用:
            grp.Select()                          '选定组合体
            WordApp.Selection.Cut()              '剪切
            WordApp.GoBack()                      '将插入点移动到刚才编辑位置(自动移动到P)
            WordApp.Selection.Paste()            '粘贴
            WordApp.Selection.MoveRight(1, 1)    '将插入符右移一个字符(当选定时即移动到选定对象右面)
    这样做有一些麻烦:
    1、当关闭WORD时,提示有一副图像放在剪贴板中。这个对话框明显是一个令人厌烦的“副产品”
    2、更主要的是,当执行以上操作后,经常无法达到预期的效果,机器越慢越难达到:执行以上操作后grp仍旧位于文档开头。这个问题非常令人头疼,因为不是每次执行都跑到文档开头,是有时候,尝试在WordApp.GoBack()之后加入DoEvents,使WORD有足够时间执行该操作也没有改善。
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zcsor
    • 等级:
    发表于:2008-06-12 16:53:161楼 得分:0
    高手同志们,版主同志们,你们都在干什么啊??????
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-16 15:49:152楼 得分:0
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • starr0110
    • 等级:
    发表于:2008-06-16 22:14:493楼 得分:0
    不能取得currentLocation吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 08:15:174楼 得分:0
    Shapes.AddTextbox Method

    注意看看最后一个参数
    Anchor
    Optional Object. A Range object that represents the text to which the text box is bound. If Anchor is specified, the anchor is positioned at the beginning of the first paragraph in the anchoring range. If this argument is omitted, the anchoring range is selected automatically and the text box is positioned relative to the top and left edges of the page.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zcsor
    • 等级:
    发表于:2008-06-18 09:28:445楼 得分:0
    LS的意思是不是在当前光标位置创建一个Range然后将所有文本框关联到这个Range对象?可Grup方法组合后得到的Shape对象还得设置排版格式吧。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zcsor
    • 等级:
    发表于:2008-06-19 14:45:176楼 得分:0
    附:相同帖地址
    http://topic.csdn.net/u/20080619/14/243bb4b3-ebc0-4968-9155-e2e68513458a.html
    http://topic.csdn.net/u/20080619/14/b9e2aae3-72c8-4c5e-8088-af4f07b9c94e.html
    http://topic.csdn.net/u/20080619/14/d133c91f-8f7e-4e9f-ab9a-8fffcd805516.html
    http://topic.csdn.net/u/20080619/09/6010aa99-10ca-4d33-8d6a-a46b95e753e2.html
    http://topic.csdn.net/u/20080619/09/0f16e31f-9919-4fc6-ae68-cdd9ffe776dc.html
    http://topic.csdn.net/u/20080619/09/acf973da-b800-4228-adea-da48b647de07.html
    http://topic.csdn.net/u/20080612/01/8b6bdba5-45f7-45da-8845-a9734481b678.html
    http://topic.csdn.net/u/20080619/14/9c325668-bf7f-4ac1-ac32-10503ad916d5.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ChinaOBS
    • 等级:
    发表于:2008-06-20 11:52:057楼 得分:0
    1、清空剪贴板:

    VBScript code
    Public Declare Function OpenClipboard Lib "USER32" (ByVal hwnd As Long) As Long Public Declare Function EmptyClipboard Lib "USER32" () As Long Public Declare Function CloseClipboard Lib "USER32" () As Long Sub ClearQTB() OpenClipboard 0 EmptyClipboard CloseClipboard End Sub


    2、shape好像不是嵌入式的,如果要像字符一样插入到指定的位置,必须用嵌入式Shape,也就是InlineShape。虽然Shape可以使用converttoinlineshape方法转换成InlineShape,但并不是所有的Shape都可以这么做... ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zcsor
    • 等级:
    发表于:2008-06-22 14:13:328楼 得分:0
    引用 6 楼 ChinaOBS 的回复:
    1、清空剪贴板:


    VBScript codePublic Declare Function OpenClipboard Lib "USER32" (ByVal hwnd As Long) As Long
    Public Declare Function EmptyClipboard Lib "USER32" () As Long
    Public Declare Function CloseClipboard Lib "USER32" () As Long

    Sub ClearQTB()
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
    End Sub


    2、shape好像不是嵌入式的,如果要像字符一样插入到指定的位置…

    这个问题我是想只清除WORD剪贴板里被我复制的那个GROUP,其他的不操作。
    用嵌入式Shape嘛,可是嵌入了一个空白框啊,即使设置AddTextbox的最后一个参数为这个新插入的对象,也不行。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved