Foxtable(狐表)用户栏目专家坐堂 → 能不能利用代码给WORD报表加一个文档保护密码?


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

主题:能不能利用代码给WORD报表加一个文档保护密码?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/24 16:57:00 [显示全部帖子]

 可以,参考

 

 

Dim app As New MSWord.Application
try
    Dim fileName = "d:\test.doc"
    Dim doc = app.Documents.Open(fileName)
    doc.Protect (Password:="123456", NoReset:=False, Type:= _
        MsWord.WdProtectionType.wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False)
    app.Documents.save
catch ex As exception
    msgbox(ex.message)
finally
    app.Quit
End try


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/24 22:22:00 [显示全部帖子]

Dim tm As String  = ProjectPath & "Attachments\A.doc" '指定模板文件
Dim fl As String = ProjectPath & "Reports\A.doc" '指定目标文件
Dim wrt As New WordReport(Tables("表A"),tm,fl) '定义一个WordReport
wrt.Build() '生成报表
wrt.quit
Dim app As New MSWord.Application
try
    Dim fileName = fl
    Dim doc = app.Documents.Open(fileName)
    doc.Protect (Password:="123456", NoReset:=False, Type:= _
    MsWord.WdProtectionType.wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False)
    app.Documents.save
    app.Visible = True
catch ex As exception
    msgbox(ex.message)
finally
    'app.Quit
End try

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/24 22:59:00 [显示全部帖子]

 1、调出任务管理器,去掉winword进程;或者重启你的计算机

 

 2、完成1,代码本来就不会提示保存的。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/25 17:22:00 [显示全部帖子]

 呃,测试了一下,项目正常。

 

 不正常,是因为你之前弄错了,没有关闭winword进程


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/25 17:39:00 [显示全部帖子]

以下是引用wusim在2015/2/25 17:31:00的发言:
WORD报表打开后不见了原有的WORD系统菜单。

 

测试,没有问题的,一切正常。杀死进程,或者你重启电脑再试吧


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/26 9:04:00 [显示全部帖子]

以下是引用wusim在2015/2/26 8:52:00的发言:
没有解决问题,单独打开已加密码的WORD报表没有问题,代码合起来在我的电脑就有问题(WORD2003).能不能这样分开处理,先生成WORD报表文件--〉给文件加文档保护密码(不要不显示报表)---〉再显示WORD报表

 

代码就是生成word,然后加入密码,然后显示啊。

 

代码我测试是没有任何问题的啊


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/26 10:27:00 [显示全部帖子]

Dim tm As String  = ProjectPath & "Attachments\A表.doc" '指定模板文件
Dim fl As String = ProjectPath & "Reports\A表.doc" '指定目标文件
Dim wrt As New WordReport(Tables("表A"),tm,fl) '定义一个WordReport
wrt.Build() '生成报表
wrt.quit
Dim app As New MSWord.Application
try
    Dim fileName = fl
    Dim doc = app.Documents.Open(fileName)
    doc.Protect (Password:="123456", NoReset:=False, Type:= _
    MsWord.WdProtectionType.wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False)
    app.Documents.save
catch ex As exception
    msgbox(ex.message)
finally
    app.Quit
End try

Dim web As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
web.OfficeToolBar = True
web.Address = fl

[此贴子已经被作者于2015/2/26 10:27:34编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/26 10:36:00 [显示全部帖子]

 看15楼啊

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/26 10:40:00 [显示全部帖子]

如果还报错,这样写代码试试

 

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("winword")
For Each p As System.Diagnostics.Process In ps
    If p.MainWindowTitle = Nothing  Then
            p.kill       
    End If
Next

Dim tm As String  = ProjectPath & "Attachments\A表.doc" '指定模板文件
Dim fl As String = ProjectPath & "Reports\A表.doc" '指定目标文件
Dim wrt As New WordReport(Tables("表A"),tm,fl) '定义一个WordReport
wrt.Build() '生成报表
wrt.quit
Dim app As New MSWord.Application
try
    Dim fileName = fl
    Dim doc = app.Documents.Open(fileName)
    doc.Protect (Password:="123456", NoReset:=False, Type:= _
    MsWord.WdProtectionType.wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False)
    app.Documents.save
catch ex As exception
    msgbox(ex.message)
finally
    app.Quit
End try

Dim web As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
web.OfficeToolBar = True
web.Address = fl


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/26 10:51:00 [显示全部帖子]

  不可能啊,测试没问题啊。看楼上的代码啊。

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