再开一贴:WORD2007 组合对象如何设置排版格式为嵌入式

清晨曦月
博客专家认证
2008-06-19 02:36:49
向WORD文档插入两个文本框两个线条之后,将其组合设置为嵌入式的问题。
水平不讲,想看看CSDN还有么有热心人啊。
原帖内容:
简言之,就是把一个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有足够时间执行该操作也没有改善。
...全文
261 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 2008-06-22
  • 打赏
  • 举报
回复
[Quote=引用 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好像不是嵌入式的,如果要像字符一样插入到指定的位置…
[/Quote]
这个问题我是想只清除WORD剪贴板里被我复制的那个GROUP,其他的不操作。
用嵌入式Shape嘛,可是嵌入了一个空白框啊,即使设置AddTextbox的最后一个参数为这个新插入的对象,也不行。
ChinaOBS 2008-06-20
  • 打赏
  • 举报
回复
1、清空剪贴板:

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都可以这么做... ...
CathySun118 2008-06-20
  • 打赏
  • 举报
回复
1、当关闭WORD时,提示有一副图像放在剪贴板中。这个对话框明显是一个令人厌烦的“副产品”
----------------------------------------------------------------------------------
这个应该是系统的提示,不知道能否HOOK到


2、更主要的是,当执行以上操作后,经常无法达到预期的效果,机器越慢越难达到:执行以上操作后grp仍旧位于文档开头。这个问题非常令人头疼,因为不是每次执行都跑到文档开头,是有时候,尝试在WordApp.GoBack()之后加入DoEvents,使WORD有足够时间执行该操作也没有改善。
-------------------------------------------------------------------------------------------------------------------------
在文档前面先填充一定数量的回车换行,再插入
红叶哥 2008-06-20
  • 打赏
  • 举报
回复
這麼多貼,我都不知道回哪一個好
@__@
舉杯邀明月 2008-06-19
  • 打赏
  • 举报
回复
跟着老马一起灌水~~~~~
嗷嗷叫的老马 2008-06-19
  • 打赏
  • 举报
回复
.............X_X
清晨曦月 2008-06-19
  • 打赏
  • 举报
回复
附:相同帖地址
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

2,464

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧