ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8926|回复: 9

[讨论] Word-VBA,如何确定Table的标识。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-1-21 08:16 | 显示全部楼层 |阅读模式
Sub ls()
  Dim rr As Table
  For Each rr In ThisDocument.Tables
    Debug.Print TypeName(rr), rr.ID
  Next rr
End Sub
运行结果,rr.ID没有显示
问题提出
还有什么办法,确定Table的标识???

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-21 08:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在这个帖子http://club.excelhome.net/thread-260487-1-1.html
守柔大侠的解答是
可以使用书签把表格“固定”。
Sub Example()
    Me.Bookmarks("myBK").Range.Tables(1).Select
End Sub
表格的Tables.Item(index)中,Index 只能为 Long 类型的值,表明单个对象的序号位置。
可以使用ID属性标识表格,但不能直接引用该标识,如:
Sub Test()
    Dim oTable As Table
    Me.Tables(2).ID = "abc"
    For Each oTable In Me.Tables
        If oTable.ID = "abc" Then
            oTable.Select
            Exit For
        End If
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2010-1-21 16:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 ningyong58 于 2010-1-21 08:16 发表
Sub ls()
  Dim rr As Table
  For Each rr In ThisDocument.Tables
    Debug.Print TypeName(rr), rr.ID
  Next rr
End Sub
运行结果,rr.ID没有显示
问题提出
还有什么办法,确定Table的标识???

ID是需要设置的,才有返回,就象你新建一个文档,空白的,它返回的只是chr$(13).
另外,建议你直接提出你的真实意图,这更有利于问题的解决。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-21 16:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
真实意思是
http://club.excelhome.net/thread-529163-1-1.htmlExcel-Vba-重复使用Word的Dot文件。
由于重复插入了n个模版文件。这就涉及到插入的n个表的修改问题。

Sub ls1()
    Dim WordApp As Word.Application
   
    Set WordApp = GetObject(, "Word.Application")
    Dim Wd As Word.Document
    Set Wd = WordApp.ActiveDocument
    Selection.WholeStory
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.InsertFile FileName:="文档模板.dot", Range:="", ConfirmConversions:= _
        False, Link:=False, Attachment:=False
    nn = 1
    With Wd
      Me.Tables(.Tables.Count).ID = "a" & nn
    End With
    Debug.Print Wd.Tables.Count
End Sub

再请关注这个帖子。
http://club.excelhome.net/viewth ... amp;extra=page%3D1#
tables.item问题。
请看附件中的doc1.doc文件。
南酒集团文档处理平台.rar (137.86 KB, 下载次数: 49)

[ 本帖最后由 ningyong58 于 2010-1-21 16:49 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-1-21 16:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个问题,其实解决起来很简单,我没有看你的链接,姑且臆测一下。
因为需要动态的插入模板中的内容,然后,要对新插入的表格进行适当的修改。如果是,提两个建议:
一是插入所有模板内容后,对表格进行处理,如果是同一个模板,则表格的数量是固定的,可以使用MOD来判断是模板的第几个表,这是最简单的方法,也最“经济”。
二是使用RANGE对象的Table。插入文件总是在文档的结束标记前一个字符处插入(可以再加上段落标记或者分节符),取得插入前的end位置,取得插入后的end位置(文档结束位置),这个,这个范围就是新插入的模板内容在当前文档中的RANGE,遍历这个RANGE的表格对象即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-21 17:02 | 显示全部楼层
目标需求是先学习同一个模板的解决方法,掌握后再学习n个模版的表格处理方法。
表格的数量是固定的,可以使用MOD来判断是模板的第几个表,这是最简单的方法,也最“经济”。

好好学习理解和领会这个关键点,如何理解Mod判断是模板的第几个表???

能举个例子吗,谢谢。

[ 本帖最后由 ningyong58 于 2010-1-21 17:07 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-1-21 17:08 | 显示全部楼层
原帖由 ningyong58 于 2010-1-21 17:02 发表
同一个模板,则表格的数量是固定的,可以使用MOD来判断是模板的第几个表,这是最简单的方法,也最“经济”。
现在需要理解的是Mod判断是模板的第几个表???
能举个例子吗,谢谢。

话已经说得很白了。
你插入这个模板时,可以动态取得它的表的数量,也有两种方法,一是先Getobject,取得对该模板的引用,取得它的document.Tables.count,这是一种;第二种方法,如果是新文档中第一次插入这个模板后,取得当前文档的表格的数量;如果是已有N个表格时,模板的表格数量=插入后的当前文档的表格数-插入前的当前文档的表格数量。假设表格数量为5(x)个。
在当前文档中遍历表格并计数,请使用FOR EACH 效率更高,下一行为表格计数为M(M=M+1),当M>n时,取得一个值,如L=M-n(原文档中有三个表格,那么,从第四个表格开始),K=L mod  X,当K=0时,为最后一个表格,=1时为第一个表格,我想您应该明白了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-21 17:15 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-1-24 16:11 | 显示全部楼层
Tables和ImageButtons的ID的命名规则:
http://www.microsoft.com/china/c ... iewPriSubTable.mspx
用对ImageButton的点击,程序控制网页上的相应的Tables的显示与隐藏,这些ImageButton.id和Table.id的命名就需要一定的规则。
对DataSet中的第一张主表:
由字段行生成的网页Table的id命名为t0
由记录行生成的网页Tables的id分别为t1,t2,...tn ,与这些Tables相对应的ImageButton.id命名为 e1,e2,...en, 这里 n:主表的记录行数
对DataSet中的子表:
子表中的记录行都是隶属于主表中的某一记录行,因此这些记录行生成的网页Tables也隶属于主表某一记录行所生成网页的Table,如隶属于t2的Tables命名为t2-0,t2-1,t2-3...,其中t2-0为子表的字段名行在网页上生成的Table.id名,其余以此类推,若子表没有子表了,即最后一个子表,则t2-0是包含子表的字段名行和相应的子表记录行在网页上生成的Table.id名。
与这些table.id相对应的ImageButton.id分别命名为e2-1,e2-2,...。

TA的精华主题

TA的得分主题

发表于 2016-7-27 10:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ningyong58 发表于 2010-1-21 08:23
在这个帖子http://club.excelhome.net/thread-260487-1-1.html
守柔大侠的解答是
可以使用书签把表格“固 ...

这段代码是在word中的吧?
好像For Each …… In Me.Tables在excel vba中无法运行呀!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-21 09:11 , Processed in 0.046387 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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