以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问如何一次性选定word文档中的所有表格?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124354)

--  作者:wcs
--  发布时间:2018/9/4 23:01:00
--  请问如何一次性选定word文档中的所有表格?
我现在用这样的代码:
全局代码:Public _app As MSWord.Application \'定义一个WORD对象
按键代码:
Dim tbs = _app.Selection.Tables \'对表格进行排版
For i = 1 To tbs.Count
    Dim tb = tbs(i)
    tb.Range.Select
Next

这样只是依次选定表格,最后的结果是选定了最后一个表格。

希望像按住CTRL键一样一个个地选定WORD中的表格。

有合适的代码吗?

--  作者:有点蓝
--  发布时间:2018/9/4 23:19:00
--  
试试

Dim app As new MSWord.Application
Dim doc = app.Documents.Open("d:\\test.doc")
For Each mytable As object In Doc.Tables
    mytable.Range.Editors.Add(MSWord.WdEditorType.wdEditorEveryone)
Next
Doc.SelectAllEditableRanges (MSWord.WdEditorType.wdEditorEveryone)
app.quit

--  作者:wcs
--  发布时间:2018/9/5 20:52:00
--  
经测试,上述对WORD中普通的表是有效的。
但对于WORD中域链接形成的表,用大大的方括号框起来了,选定区域包含前后的回车键。
这样,用户就无法在WORD中用右键作批量的操作表了(排版)。

还有别的方法吗?

原来的这:tb.Range.Select  是可以选定WORD中域链接形成的表的,没有括号也没有前后的回车键。
但是这只能选择一个。

--  作者:有点甜
--  发布时间:2018/9/5 21:22:00
--  

参考

 

Dim app As new MSWord.Application
Dim doc = app.Documents.Open("d:\\test123.doc")
For Each mytable As object In Doc.Tables
    mytable.Range.Editors.Add(MSWord.WdEditorType.wdEditorEveryone)
Next
Doc.SelectAllEditableRanges (MSWord.WdEditorType.wdEditorEveryone)
Doc.DeleteAllEditableRanges (MSWord.WdEditorType.wdEditorEveryone)
app.visible = True


--  作者:wcs
--  发布时间:2018/9/5 22:02:00
--  
增加了这行代码以后,WORD中域链接形成的表,大大的方括号没有了,但是仍然选定了表前面的一个回车键。
这对于WORD中普通的表是有效的。

--  作者:有点甜
--  发布时间:2018/9/5 22:04:00
--  
以下是引用wcs在2018/9/5 22:02:00的发言:
增加了这行代码以后,WORD中域链接形成的表,大大的方括号没有了,但是仍然选定了表前面的一个回车键。
这对于WORD中普通的表是有效的。

 

没有其他方法了,只有这种方法。


--  作者:wcs
--  发布时间:2018/9/5 23:09:00
--  
虽然没有解决这个问题,我知道C#可以解决这个问题但是我不会,虽如此我还是要十分感谢您!

近一周以来,对于我提出的这样冷门的WORD自动刷新数据排版类的问题,您也非常及时地解答,我非常感谢您!

作为一个从易表时代走过来的人,我是很喜欢FOXTABLE的!

我目前正在作的,是我这个行业的执业人士很需要的,可以大幅度减轻工作强度并提高工作质量。

十分感谢!

--  作者:有点甜
--  发布时间:2018/9/5 23:19:00
--  
c#同样没有方法解决。c#可以foxtable同样也可以。