Foxtable(狐表)用户栏目专家坐堂 → EXCEL文件 操作问题


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

主题:EXCEL文件 操作问题

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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
EXCEL文件 操作问题  发帖心情 Post By:2016/8/11 10:42:00 [只看该作者]

D:\123.xls

要求:判断 D:\123.xls文件是否打开,如果已打开 则强行 直接关闭 D:\123.xls文件 ,关闭过程中无需任何提示(比如保存)

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/11 10:50:00 [只看该作者]


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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/8/11 11:17:00 [只看该作者]

Dim wjm As String ="123.xls"
Dim wkm As String = "D:\" & wjm
Output.Show(wkm)

If FileIsOpened(wkm)= True Then
    Output.Show("文件已打开")
    ShowAppWindow(wjm,5)
Else
    Output.Show("未打开")    
    Dim proc As new Process
    proc.File = wkm
    proc.Start   
End If

这测试代码 其它的所有 都执行正常,唯独这一句   ShowAppWindow(wjm,5) 要关闭 这个文件的代码 没能达到效果。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/11 11:18:00 [只看该作者]

红色代码,要写的是你窗口的标题,标题正确,肯定能关闭。

 

ShowAppWindow("123",5)


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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/8/11 11:27:00 [只看该作者]

谢谢 ,是这个问题 如果 123.xls 在打开后 有所修改,则用 ShowAppWindow("123",5) 这个关闭窗口,会有 提示保存窗口出现,如何不让其 出现这个提示窗口,就直接关闭。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/11 11:33:00 [只看该作者]

这样写

 

Dim wkm As String = "D:\test.xls"
If FileIsOpened(wkm)= True Then
    Output.Show("文件已打开")
    Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")
    For Each p As System.Diagnostics.Process In ps
        msgbox(p.MainWindowTitle)
        If p.MainWindowTitle.contains("test.xls") Then  p.kill
    Next
Else
    Output.Show("未打开")
    Dim proc As new Process
    proc.File = wkm
    proc.Start
End If


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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/8/11 12:23:00 [只看该作者]

Dim wkm As String = "D:\123.xlsx"
If FileIsOpened(wkm)= True Then
    Output.Show("文件已打开")
    Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")
    For Each p As System.Diagnostics.Process In ps
        msgbox(p.MainWindowTitle)
        If p.MainWindowTitle.contains("123") Then  p.kill
    Next
Else
    Output.Show("未打开")
    Dim proc As new Process
    proc.File = wkm
    proc.Start
End If


这代码 尚有缺点

一,如果是 先打开 123.xlsx 文件 再打开了其它EXCEL 文件 ,即123.xlsx 文件 非当前活动 EXCEL窗口,则不能关闭123这个WORKBOOK。
二,如果打开了多个 EXCEL WORKBOOK 则本程序 直接杀了 EXCEL程序 其它用户 已打开 的 EXCEL 文件 也会直接杀掉,这是万万不可的。

那么请教一下 写法:

  • Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\123.xlsx")
如果123.xlsx 文件已打开了,如何将 123.xlsx这个WORKBOOK 赋值给 Wb了


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/11 12:26:00 [只看该作者]

 不行,没办法。

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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/8/11 16:30:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20160811162741.png
图片点击可在新窗口打开查看

---------------------------
提示
---------------------------
文件"c:\reports\test.xls"已经被打开,请先关闭之!
---------------------------
确定   
---------------------------


唉这个问题居然 无解!!!!!!!!!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/11 16:33:00 [只看该作者]

 没办法啊。

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