以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 文件监视器不能返回excel跟word的文件名 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=148742) |
-- 作者:lxhmax -- 发布时间:2020/4/14 15:20:00 -- 文件监视器不能返回excel跟word的文件名 文件监视器不能返回excel跟word的文件名,这个是什么情况? filechange的代码 MessageBox.Show(e.Name) 文件监视启动代码 With FileWatcher .Path = ProjectPath & "Excel\\报告管理" .Delay = 500 .Enabled = True End With 我实际想得到的是单纯的文件名,不要包含路径 这个是excel跟word文件修改的提示 ![]() ![]() 下面这个是txt文件的修改提示 [此贴子已经被作者于2020/4/14 15:22:48编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/4/14 17:01:00 -- 参考:http://www.foxtable.com/webhelp/topics/1406.htm |
-- 作者:lxhmax -- 发布时间:2020/4/15 2:06:00 -- 一样的老师,txt文件能正常返回文件名,excel跟word文件就还是跟之前的截图一样 |
-- 作者:lxhmax -- 发布时间:2020/4/15 2:17:00 -- http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77316&page=0&move=next 跟这个情况是一样的
|
-- 作者:有点蓝 -- 发布时间:2020/4/15 9:23:00 -- excel跟word文件如果是复制过去的不会有问题。excel跟word文件修改的时候会产生几个临时文件的。这种问题您得找微软。实际上excel跟word文件修改保存会多次触发监视器事件的,空文件、tmp文件、~开头的文件忽略即可 |
-- 作者:lxhmax -- 发布时间:2020/4/15 14:13:00 -- 老师,请问下面这个怎么加上延迟执行的代码? Public Sub OnCreated(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs) \'msgbox("OnChanged" & e.FullPath & "e.ChangeType:" & e.ChangeType.ToString())
调用和启用: Dim watcher As new System.IO.FileSystemWatcher() |
-- 作者:lxhmax -- 发布时间:2020/4/15 14:19:00 -- 老师,还有下面这个问题 这个全局代码有什么问题吗?经常会导致整个程序闪退的 Public Sub OnRenamed(ByVal source As Object, ByVal e As System.IO.RenamedEventArgs) Dim wj As String = FileSys.GetName(e.FullPath) Dim lj,mb As String If wj.Contains(".xlsx") Then Dim dr As DataRow = DataTables("bgffjl").SQLFind("[文件名] = \'" & wj & "\'") If wj.Contains("测试报告") Then mb = "测试报告" Else mb = "检测报告" End If lj = ProjectPath & "Excel\\报告管理\\" & mb & "\\" & dr("wtdh") & "\\" & wj If dr IsNot Nothing Then If CRCCheckFile(lj) <> dr("本地校验码") Then If MessageBox.Show("【" & wj & "】报告已修改!是否同步至服务器?" & vbcrlf & "【是】 关闭文件并上传至服务器" & vbcrlf & "【否】 取消本次修改同步操作", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then ShowAppWindow(wj,5) Dim ftp As new ftpclient ftp.host="123123123" ftp.Account = "123123" ftp.password = "123123" ftp.UTF8 = True ftp.Upload(lj,"\\报表生成文件\\" & mb & "\\" & dr("wtdh") & "\\" & wj ) dr("本地校验码") = CRCCheckFile(lj) dr("服务器校验码") = CRCCheckFile(lj) dr.Save End If End If End If End If End Sub
|
-- 作者:有点蓝 -- 发布时间:2020/4/15 15:11:00 -- 第三方用法自己学习参考:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filesystemwatcher?view=netframework-4.8 试试 Public Sub OnRenamed(ByVal source As Object, ByVal e As System.IO.RenamedEventArgs) Dim wj As String = FileSys.GetName(e.FullPath) Dim lj,mb As String If wj.Contains(".xlsx") Then Dim dr As DataRow = DataTables("bgffjl").SQLFind("[文件名] = \'" & wj & "\'") If dr IsNot Nothing Then If wj.Contains("测试报告") Then mb = "测试报告" Else mb = "检测报告" End If lj = ProjectPath & "Excel\\报告管理\\" & mb & "\\" & dr("wtdh") & "\\" & wj If CRCCheckFile(lj) <> dr("本地校验码") Then If MessageBox.Show("【" & wj & "】报告已修改!是否同步至服务器?" & vbcrlf & "【是】 关闭文件并上传至服务器" & vbcrlf & "【否】 取消本次修改同步操作", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then ShowAppWindow(wj,5) Dim ftp As new ftpclient ftp.host="123123123" ftp.Account = "123123" ftp.password = "123123" ftp.UTF8 = True ftp.Upload(lj,"\\报表生成文件\\" & mb & "\\" & dr("wtdh") & "\\" & wj ) dr("本地校验码") = CRCCheckFile(lj) dr("服务器校验码") = CRCCheckFile(lj) dr.Save End If End If End If End If End Sub |