Foxtable(狐表)用户栏目专家坐堂 → Foxtable操控Word的代码(测试成功,分享大家)


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

主题:Foxtable操控Word的代码(测试成功,分享大家)

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
Foxtable操控Word的代码(测试成功,分享大家)  发帖心情 Post By:2013/9/2 22:18:00 [只看该作者]

 

'操控Word文档,主要是文档合并

'*******************************

'*********以下代码可修改**********

Dim FileName = "任免审批表.doc"   '定义模版文件名

Dim Ctn As String = "EmptyTable"  '当前表表名

Dim Tb As Table = Tables(Ctn)   '定义当前表.

 

'*********以上代码可修改**********

'*******************************

 

If FileSys.DirectoryExists(ProjectPath & "Reports\") = False Then   '如果Reports文件夹不存在

    FileSys.CreateDirectory(ProjectPath & "Reports\")    '创建Reports文件夹

End If

Dim App As New MSWord.Application    '定义MSWord

Try

    '获得模版

    Dim nDoc = App.Documents.Open(ProjectPath & "Attachments\" & FileName)

    Dim rng As MSWord.Range = App.Documents(FileName).Range

    rng.Select()   '全选

    rng.Copy()   '拷贝

    nDoc.Activate()

   

    '插入文段

    Dim idx As Integer = 0

    If Tb.Rows.Count > 0 Then

        For i As Integer = Tb.TopPosition To Tb.BottomPosition

            Dim cr As Row = Tb.Rows(i)

            If idx >= 1 Then

                rng = nDoc.Range(start:=0, End:=0)  '从前面粘贴

                rng.Paste

            End If

           

            '***********************************************

            '*********以下是代码主体部分,需要修改**********

            

           

            App.Selection.Find.ClearFormatting()

            App.Selection.Find.Text = "《姓名》"

            App.Selection.Find.Replacement.ClearFormatting()

            App.Selection.Find.Replacement.Text = cr("姓名")

            App.Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll)

           

           

            rng.Find.ClearFormatting()

            If rng.Find.Execute("《照片》") Then

                rng.Select()

                If FileSys.FileExists(ProjectPath & "Attachments\" & cr("图片")) Then

                    App.Selection.InlineShapes.AddPicture(ProjectPath & "Attachments\" & cr("图片"))

                End If

                rng = App.Documents(FileName).Range

                'rng.SetRange(start:=0, End:=count)

                rng.Select()

            End If

           

            '*********以上是代码主体部分,需要修改**********

            '**********************************************

            idx += 1

        Next

    End If

   

    nDoc.SaveAs(ProjectPath & "Reports\" & FileName)

Catch ex As exception

    msgbox(ex.message)

Finally

    App.Quit

End Try

 

Dim Proc As New Process

Proc.File = ProjectPath & "Reports\" & FileName

Proc.Start

 以上代码经过测试基本 成功。分享大家。

[此贴子已经被作者于2013-9-2 22:22:20编辑过]

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


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

 先顶一下。最好有实例。图片点击可在新窗口打开查看
[此贴子已经被作者于2013-9-2 22:22:10编辑过]

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


加好友 发短信
等级:婴狐 帖子:12 积分:174 威望:0 精华:0 注册:2013/6/23 2:28:00
  发帖心情 Post By:2013/9/2 22:29:00 [只看该作者]

顶起

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


加好友 发短信
等级:五尾狐 帖子:1088 积分:8247 威望:0 精华:4 注册:2012/3/31 18:08:00
  发帖心情 Post By:2013/9/2 22:37:00 [只看该作者]

还是上个实例 吧。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/9/3 7:17:00 [只看该作者]

没有实例也顶,

如有实例再顶。


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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/9/3 15:02:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=27937&page=4

 

例子这儿有,只需要把替换的诸如:"《姓名》" cr(“姓名”)替换掉,把上述代码放到按钮中即可


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


加好友 发短信
等级:二尾狐 帖子:517 积分:4199 威望:0 精华:0 注册:2009/10/8 16:43:00
  发帖心情 Post By:2013/9/3 15:03:00 [只看该作者]

谢谢分享!

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/9/8 15:46:00 [只看该作者]

App.Selection.Find.ClearFormatting()

            App.Selection.Find.Text = "《简历》"

            App.Selection.Find.Replacement.ClearFormatting()

            App.Selection.Find.Replacement.Text = cr("简历")

            App.Selection.Find.Execute(Replace:=MSWord.WdReplace.wdReplaceAll)


简历太长时,不能正常替换,估计与Text有关,如何解决,请那位指导


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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/9/8 17:04:00 [只看该作者]

请那位看看,text应该如何处理

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2013/9/8 17:39:00 [只看该作者]

字数只能在255个字之内,由此看来,Text应该替换,但不知道改换成什么

 回到顶部
总数 19 1 2 下一页