| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 589 人关注过本帖
标题:大神推荐下关于VB控制word的书
只看楼主 加入收藏
tailions
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-11-24
结帖率:100%
  已结贴   问题点数:10  回复次数:9   
大神推荐下关于VB控制word的书
我想用模板报告文档来生成新报告,但是控制文件的语句不会也不懂。想参考下这方面的资料,谢谢大神们推荐。
2018-12-24 23:36
wds1
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:36
帖 子:347
专家分:1840
注 册:2016-3-10
  得分:2 
自己打开word录宏,之后再移到vb。

这样做需要你的word的模板及相关目录等资源。

另一种方法是你直接创建word模板,这样与安装的word无关。

2018-12-25 10:30
ZHRXJR
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:95
帖 子:878
专家分:4602
注 册:2016-5-10
  得分:8 
以下是引用tailions在2018-12-24 23:36:44的发言:

我想用模板报告文档来生成新报告,但是控制文件的语句不会也不懂。想参考下这方面的资料,谢谢大神们推荐。


使用Word模板必须首先有这个模板,模板的格式是不能发生变化的,在模板中填写不变化的内容,变化内容需要添加标签,当然各标签必须有标签的名称。
在使用时将数据读入相应的标签就可以了,这些数据可以是文本框录入的数据,也可以是数据库中的数据等等,非常灵活的。
至于这方面的书你可以在百度搜索一下,应该有的。
2018-12-25 11:19
tailions
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-11-24
  得分:0 
回复 3楼 ZHRXJR
谢谢老师。word版报告模板是有的,标签替换也能做到。就是想把这些模板保存在程序里,别人不能修改,只需输入数据,然后生成报告。这些对文件的宏观的操作及代码都不懂。在百度上也搜索不到,只是有很多VBA方面的。再次谢谢老师指点。
2018-12-25 21:42
ZHRXJR
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:95
帖 子:878
专家分:4602
注 册:2016-5-10
  得分:0 
方法一、将设计好的 Word 模板的属性设置为只读属性,在VB中打开这个模板进行编辑,最后使用另存为对话框保存为一个新的 word 文件就可以了,这样模板是不会被修改的。即就是误点击为保存,也不能保存,因为模板是只读,不能修改的。
方法二、在VB中设计一个界面与word模板一样,输入相应的内容,保存时保存到一个新的 word 文件就可以了。
一般使用方法一比较合理, Word 模板一般保存在服务器的程序目录中,这样用户就不能修改 Word 模板的属性,比较安全。
不知道说的是不是你需要的。
2018-12-26 11:16
tailions
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-11-24
  得分:0 
回复 5楼 ZHRXJR
麻烦您看下这个程序,没有报错,但是替换不了,怎么回事。谢谢
Private Sub Command1_Click()
Tmpfile = "C:\Users\Administrator\Desktop\tmp.docx"
If Dir(Tmpfile) <> "" Then
    Kill Tmpfile
End If

FileCopy "C:\Users\Administrator\Desktop\报告模板.docx", Tmpfile
Dim myword As Object, mydocument As Object, myselection As Word.Selection
Dim i As Integer
Dim SearchStr As String
Dim ReplaceStr As String

      Set myword = CreateObject("Word.Application")   '创建word对象
      Set mydocument = myword.Documents.Open(Tmpfile)        '打开指定word文档
      Set myselection = myword.Selection '定位文件实例
      myword.Visible = False
For i = 0 To 3 Step 1
      SearchStr = "A" + Str(i)
      ReplaceStr = Text1(i).Text
      myselection.Find.ClearFormatting
      myselection.Find.Replacement.ClearFormatting
    With myselection.Find
        .Text = SearchStr
        .Replacement.Text = ReplaceStr
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    myselection.Find.Execute Replace:=wdReplaceAll
Next
mydocument.Save
mydocument.Close '关闭文档实例
myword.Quit '关闭WORD实例
Set mydocument = Nothing '清除文件实例
Set myword = Nothing '清除WORD实例

FName = "C:\Users\Administrator\Desktop\" + Text2.Text + ".docx"

If Dir(FName) <> "" Then
    MsgBox "文件已存在,请重新命名。", 48, 报告名称错误
Else
Name Tmpfile As FName
End If
 MsgBox "完成"
End Sub
2018-12-28 00:53
wds1
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:36
帖 子:347
专家分:1840
注 册:2016-3-10
  得分:0 
估计是目录权限问题,我这里运行没问题。

你把文件放到D:盘

2018-12-28 11:25
tailions
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-11-24
  得分:0 
回复 7楼 wds1
谢谢 找到原因了 "A" + Str(0) 与 "A0"不相同。用后者可以替换,用前者就不能。挺不理解的。替换的内容比较多,单个赋值太麻烦,怎么破?
2018-12-29 20:35
wds1
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:36
帖 子:347
专家分:1840
注 册:2016-3-10
  得分:0 
"A" + Str(0) ="A 0",因为有符号位,符号位转为空格了
"A" + trim(Str(0)),就没问题了

2018-12-30 09:49
tailions
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-11-24
  得分:0 
回复 9楼 wds1
谢谢,受益匪浅。又出现了一个问题,本来输入文本框里的是小写字母,复制完后,在word里,却显示大写,头痛。请指教。谢谢
2018-12-31 03:18







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026650 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved