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


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

主题: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


加好友 发短信
等级:一尾狐 帖子: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) 要关闭 这个文件的代码 没能达到效果。

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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了


 回到顶部
帅哥哟,离线,有人找我吗?
凡夫俗子
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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"已经被打开,请先关闭之!
---------------------------
确定   
---------------------------


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

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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/8/11 16:46:00 [显示全部帖子]

看来 只有官方在 ShowAppWindow("123",5) 中加参数才能解决这个问题


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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/8/11 16:48:00 [显示全部帖子]

如何调用windows API遍历目前所有进程,判断当前EXCEL进程打开的是 这个WORKBOOK呢


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


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

EXCEL中的VBA代码 可以做到 直接关闭 指定 123.xlsx 而不提示 保存对话框

Sub Macro1()
    Dim wb As Workbook
    For Each wb In Workbooks
      MsgBox (wb.Name)
       If wb.Name = "123.xlsx" Then wb.Close False    ' "a"改为真实的文件名
    Next
End Sub

能以此为突破口 变通解决这一问题不。

如果 123.xlsx EXCEL文件  已打开。则新建立一个 EXCEL工作薄 AA,向其中写入 这个 VBA代码 ,执行这个VBA代码,无条件关闭 123.xlsx 文件 
关闭 刚才建立 的 EXCEL工作薄 AA

 回到顶部