以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]多文件管理 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=58247) |
-- 作者:lesliecheung912 -- 发布时间:2014/10/14 14:43:00 -- [求助]多文件管理 在多文件管理中,选择一个Word文件并在窗口中的Webbrowser中打开,打开按钮代码: Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("WinWord") For Each p As System.Diagnostics.Process In ps p.kill Next If Tables("员工.附件").Current Is Nothing Then Return End If Dim dr As DataRow = Tables("员工.附件").Current.DataRow Dim fl As String = ProjectPath & dr("文件名") \'messagebox.show(fl) \'messagebox.show(CRCCheckFile(fl)) \'messagebox.show(dr.SQLGetValue("CRC值")) If FileSys.FileExists(fl) AndAlso CRCCheckFile(fl) = dr.SQLGetValue("CRC值") Then \'如果本地存在同名文件且CRC校验值相同 Dim tm As String = ProjectPath & dr("_Identify") & ".doc" \'messagebox.show(1) If dr.SQLLoadFile("附件",tm) Then \'如果提取文件成功 Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1") \'Dim fl As String = ProjectPath & "Attachments\\方案申请.doc" Dim wrt As New WordReport(Tables("活动申请"),tm,fl) wrt.Build() wrt.Quit() wbr.OfficeToolBar = True \'如果不需要显示工具栏,可删除此行代码 wbr.AddRess = fl axWebBrowser = Nothing Do Until axWebBrowser IsNot Nothing Application.DoEvents Loop Dim Doc As object = axWebBrowser.Gettype().InvokeMember("Document", System.Reflection.BindingFlags.GetProperty, Nothing, axWebBrowser, Nothing) Dim app As object = axWebBrowser.Gettype().InvokeMember("Application", System.Reflection.BindingFlags.GetProperty, Nothing, Doc, Nothing) doc.Protect (Password:="", NoReset:=False, Type:= _ MsWord.WdProtectionType.wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False) End If Else \'否则从数据库提取文件 If dr.SQLLoadFile("附件",fl) = False Then \'如果提取文件失败 Messagebox.Show("附件提取失败,可能并不存在附件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Return End If End If 第一次打开时,CRCCheckFile(fl) = dr.SQLGetValue("CRC值") =0xd368ac79 再重复打开时,dr.SQLGetValue("CRC值") =0xd368ac79,但CRCCheckFile(fl) =0x132303f4;请问文件fl的CRC的值为什么变了呢?(再打开时,两个值又变成相同的)
|
-- 作者:有点甜 -- 发布时间:2014/10/14 14:52:00 -- 不理解你什么意思,如果你对文件进行了修改保存,值肯定是会改变了。 |
-- 作者:lesliecheung912 -- 发布时间:2014/10/14 14:58:00 -- 我只是将文件在Webbrowser中打开,并没有做什么修改,为什么值会改变呢?这个终止进程的代码有关系吗? |
-- 作者:有点甜 -- 发布时间:2014/10/14 15:14:00 -- 你打开以后,用vba设置成保护Protect,就是修改了,最后你不能保存,保存的话就修改了。
|
-- 作者:有点甜 -- 发布时间:2014/10/14 15:16:00 -- 设置不保存,参考
doc.Saved = true |
-- 作者:lesliecheung912 -- 发布时间:2014/10/14 15:36:00 -- 谢谢甜姐! |
-- 作者:lesliecheung912 -- 发布时间:2014/10/14 16:06:00 -- 甜姐,我在插入图片以后将本地的文件上传到后台,会报如下错误: 此主题相关图片如下:222.png 代码是:\'终止Word进程 Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("WinWord") For Each p As System.Diagnostics.Process In ps p.kill Next \'\'\'往本地文件插入图片 Dim dr As DataRow = Tables("活动申请.wd").Current.DataRow Dim app As New MSWord.Application try Dim fileName = ProjectPath & dr("文件名") app.Documents.Open(fileName) app.Documents(fileName).Range(Start:=30, End:=40).InlineShapes.AddPicture(FileName:= _ "D:\\123.jpg" _ , LinkToFile:=False, SaveWithDocument:=True) app.Documents.save \'messagebox.show("您已成功插入图片!!") catch ex As exception msgbox(ex.message) finally \'app.Quit End try \'\'\'覆盖 If Tables("活动申请.wd").Current Is Nothing Then Return End If If dr.RowState = DataRowState.Added Then \'如果是新增行,必须先保存才能插入文件 dr.Save() End If Dim tm As String = ProjectPath & dr("文件名") If dr.SQLInsertFile("附件",tm) Then \'如果插入文件成功 messagebox.show("您已覆盖成功!!") Else messagebox.show("覆盖失败!!") End If 请问那地方有问题呢?
|
-- 作者:有点甜 -- 发布时间:2014/10/14 16:15:00 -- 可能文件路径错 Dim fileName = ProjectPath & dr("文件名") |
-- 作者:lesliecheung912 -- 发布时间:2014/10/14 16:21:00 -- 改成这样也不行啊:Dim fileName = ProjectPath & "Attachments\\方案申请.doc" 那这个路径应该怎么设置?
|
-- 作者:有点甜 -- 发布时间:2014/10/14 16:30:00 -- 加入msgbox,看哪句代码出问题。
http://www.foxtable.com/help/topics/1485.htm
|