以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  VBA代码中的 set 语句,在Foxtable中有替代的用法吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124001)

--  作者:wcs
--  发布时间:2018/8/28 18:45:00
--  VBA代码中的 set 语句,在Foxtable中有替代的用法吗?
比如,在VBA中,有这样的代码:
 Set tbs = Selection.Tables

意思是把选定区域内的表集合,赋值给名为tbs的变量,在以后的代码中直接用tbs变量,如:
tbs.Item(i)..Range.Find.Text = " "
tbs.Item(i)..Range.Find.Replacement.Text = ""   ’文本中要删除的字符
tbs.Item(i)..Range.Find..Execute Replace:=wdReplaceAll \'全部删除

在Foxtable中没有SET语句了,在Foxtable中该如何写代码达到相同的目的?
用with     end with

还是直接用  object 对象

还是有别的方法?

--  作者:有点甜
--  发布时间:2018/8/28 18:57:00
--  

直接用

 

Dim tbs = xxxxxxxxx

 


--  作者:wcs
--  发布时间:2018/8/29 10:17:00
--  
谢谢!

我写定了这段代码,但是达不到想要的效果,能帮忙看下哪儿出了问题吗?

Dim tbs = _app.Selection.Tables \'对表格进行排版
For i = 1 To tbs.Count ’历遍选定区域中的WORD表
    Application.DoEvents ’屏幕步步更新
    If Forms("窗口1").Controls("CheckBox9").checked = True Then ’如果在窗口有这个选项
        tbs.Item(i).Range.Find.Text = "AHE" ’要删除的字符
        tbs.Item(i).Range.Find.Replacement.Text = ""   \'清空
        output.show(tbs.Item(i).Range.Find.Text) \'我想看下变量是不是被正确地用了
        output.show(tbs.Item(i).Range.Find.Replacement.Text)
                    tbs.Item(i).Range.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll) ’这是个参数,全部替换的意思,写法应是对的与上次我作的一样
        output.show("是")
        output.show(i)
        output.show(tbs.Count)
    End If
Next

在代码运行窗口显示output.show()的内容如下:


1
2

前面的两个output.show()没有正确地引用   AHZ    和""
在执行这段代码时达不到清除所有的AHZ的目的,不知代码中哪儿有问题?请教了!

上述代码与原来VBA中的结构基本一样,我在想是不是range这儿有点问题?

--  作者:有点甜
--  发布时间:2018/8/29 10:43:00
--  

参考代码

 

Dim _app As New MSWord.Application
Dim doc = _app.Documents.open("d:\\test.doc")
Dim tbs = Doc.Tables \'对表格进行排版
For i As Integer = 1 To tbs.Count \'历遍选定区域中的WORD表
    Application.DoEvents \'屏幕步步更新
    Dim tb = tbs(i)
    tb.Range.Select
    _app.Selection.Find.Text = "AHE" \'要删除的字符
    _app.Selection.Find.Replacement.Text = ""   \'清空
   
    _app.Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll) \'这是个参数,全部替换的意思,写法应是对的与上次我作的一样
    output.show("是")
    output.show(i)
    output.show(tbs.Count)
Next
_app.visible = True


--  作者:wcs
--  发布时间:2018/8/29 11:44:00
--  
谢谢!经测试有效。

我理解上述代码与我以前的代码的区别是:先用tb.Range.Select,再次选定区域!

不再用range,因为先前选定的系统没有识别出来。