Foxtable(狐表)用户栏目专家坐堂 → 这种VBA代码如何Foxtable在MSWord中体现?


  共有2597人关注过本帖树形打印复制链接

主题:这种VBA代码如何Foxtable在MSWord中体现?

帅哥哟,离线,有人找我吗?
wcs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
这种VBA代码如何Foxtable在MSWord中体现?  发帖心情 Post By:2018/8/26 16:51:00 [只看该作者]

这段代码的意思是要在WORD中的选定区域删除指定的字符:
If qwstr <> "" Then '删除表中的指定字符
    arr = Split(qwstr, ",")
    With _app.Selection
      For i = 0 To arr.Length - 1
            .Find.Text = arr(i)
            .Find.Replacement.Text = ""
            .Find.Execute Replace:=wdReplaceAll
      output.show(arr(i))
      Next
    End With
End If


但是执行时有这样的提示:
编译错误:方法参数必须在括号内
 .Find.Execute Replace:=wdReplaceAll



这个代码的写法是VBA中的写法,我不清楚这样的情况在Foxtable中该如何写?


下述是VBA官方帮助文件的内容:

Replacement 对象代表查找和替换操作的替换条件。Replacement 对象的属性和方法对应于“查找和替换”对话框中的选项(单击“编辑”菜单中的“查找”或“替换”命令可显示该对话框)。

可通过 Find 对象使用 Replacement 对象。下列示例将所有单词“hi”替换为“hello”。由于 Find 对象是通过 Selection 对象访问的,所以当找到搜索条件时,会更改所选内容。

With Selection.Find
    .ClearFormatting
    .Text = "hi"
    .Replacement.ClearFormatting
    .Replacement.Text = "hello"
    .Execute Replace:=wdReplaceAll, Forward:=True, _
        Wrap:=wdFindContinue
End With


Replace    Variant 类型,可选。指定执行替换的个数:一个、全部或者不替换。可取下列 WdReplace 常量之一。

图片点击可在新窗口打开查看
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2018/8/26 22:59:00 [只看该作者]

我看了,这是一个WORD枚举常量   wdReplaceAll
我查了下官方帮助,是这样的:

<!--[if gte vml 1]> Bitmap <![endif]--><!--[if !vml]-->显示<!--[endif]-->
WdReplace
常量
wdReplaceAll 2
wdReplaceNone 0
wdReplaceOne 1

不知在Foxtable中如何引用这样的枚举常量

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/26 23:15:00 [只看该作者]

参考

 

Dim app As New MSWord.Application
try
    Dim fileName = "d:\test.doc"
    Dim doc = app.Documents.Open(fileName)
    app.Selection.Find.Text = "[第一列]"
    app.Selection.Find.Replacement.ClearFormatting()
    app.Selection.Find.Replacement.Text = "123456789"
    app.Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll)
    app.visible = True
catch ex As exception
    msgbox(ex.message)
    app.Quit
finally
   
End try


 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2018/8/26 23:35:00 [只看该作者]

经测试是有效的,十分感谢!

官方帮助文件中有3000个WORD枚举!

这样,我可以实现众多来源于枚举值的WORD自动排版!
[此贴子已经被作者于2018/8/26 23:36:12编辑过]

 回到顶部