标题:在运行程序前先关闭EXECEL各种表,怎么写?
只看楼主
nsjdy
Rank: 2
等 级:论坛游民
帖 子:29
专家分:33
注 册:2006-6-13
结帖率:100%
 问题点数:0 回复次数:22 
在运行程序前先关闭EXECEL各种表,怎么写?
程序最终要生成EXECEL表,如果此表在打开状态,程序运行会提示出错。在运行程序前先关闭EXECEL各种表,请问用什么语句?
搜索更多相关主题的帖子: 运行程序 关闭 提示 出错 语句 
2017-09-18 09:02
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:0 
*!* 44.关闭工作簿
oExcel.Workbooks.Close
objexcel.activeworkbook.Close(.F.)
 *!* 45.退出Excel
oExcel.Quit
Release oExcel &&只有释放对象变量, EXCEL进程才会完全关闭
2017-09-18 09:19
kim_wei
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2008-5-5
得分:0 
这样不能关闭指定的工作簿
以下是引用wangzhiyi在2017-9-18 09:19:53的发言:

 *!* 44.关闭工作簿
oExcel.Workbooks.Close
objexcel.activeworkbook.Close(.F.)
 *!* 45.退出Excel
oExcel.Quit
Release oExcel &&只有释放对象变量, EXCEL进程才会完全关闭



如果已打开多个工作簿,就会关闭当前处于活动状态的工作簿,无法关闭指定的工作簿。
2017-09-18 09:29
nsjdy
Rank: 2
等 级:论坛游民
帖 子:29
专家分:33
注 册:2006-6-13
得分:0 
回复 2楼 wangzhiyi
为什么提示找不到对象?
2017-09-18 13:30
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:0 
回复 4楼 nsjdy
上传你的代码
2017-09-18 14:02
nsjdy
Rank: 2
等 级:论坛游民
帖 子:29
专家分:33
注 册:2006-6-13
得分:0 
以下是引用wangzhiyi在2017-9-18 09:19:53的发言:

 *!* 44.关闭工作簿
oExcel.Workbooks.Close
objexcel.activeworkbook.Close(.F.)
 *!* 45.退出Excel
oExcel.Quit
Release oExcel &&只有释放对象变量, EXCEL进程才会完全关闭

试了一下,好象并不能关闭电脑上不是由VFP创建或打开的Excel表,我的目的是要关闭电脑上所有的Excel表,而不管这些表是否是由VFP程序创建或打开的。
2017-09-18 14:35
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:0 
以下是引用nsjdy在2017-9-18 14:35:03的发言:


试了一下,好象并不能关闭电脑上不是由VFP创建或打开的Excel表,我的目的是要关闭电脑上所有的Excel表,而不管这些表是否是由VFP程序创建或打开的。

历害了,我的哥。张三差你的钱,你找李四要,李四会给你钱吗?
2017-09-18 14:39
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用nsjdy在2017-9-18 14:35:03的发言:


试了一下,好象并不能关闭电脑上不是由VFP创建或打开的Excel表,我的目的是要关闭电脑上所有的Excel表,而不管这些表是否是由VFP程序创建或打开的。

关闭所有Excel进程
2017-09-18 15:10
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
VFP中不知道如何做到关闭其它进程,惭愧。
不过,如果是我来做,我会用VC、VB写一个关闭所有EXCEL进程的小程序,再用VFP来调用它。这也是一种思路。
2017-09-19 14:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
关闭EXCEL进程示例
** test.prg
#DEFINE MAX_PATH    260
#DEFINE TH32CS_SNAPPROCESS    0x00000002
#DEFINE PROCESS_ALL_ACCESS    0x001F0FFF

DECLARE LONG CreateToolhelp32Snapshot IN Kernel32 LONG, LONG
DECLARE LONG CloseHandle IN Kernel32 LONG
DECLARE LONG Process32First IN Kernel32 LONG, STRING@
DECLARE LONG Process32Next IN Kernel32 LONG, STRING@
DECLARE LONG OpenProcess IN Kernel32 LONG, LONG, LONG
DECLARE LONG GetExitCodeProcess IN Kernel32 LONG, LONG@
DECLARE LONG TerminateProcess IN Kernel32 LONG, LONG

DO WHILE _TerminateProcess("EXCEL.EXE")
    INKEY(0.1)
ENDDO
RETURN

FUNCTION _IsProcessFileName(szFileName, dhProcess)
    LOCAL stPE, dhSnapshot, szExeFile, blRet, ddPID, ddRet
        * PROCESSENTRY32 结构
    stPE = BINTOC(36+MAX_PATH, "4RS") + REPLICATE(0h00, 32+MAX_PATH)
    blRet = .F.
    dhSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)    && 进程快照
    ddRet = Process32First(dhSnapshot, @stPE)        && 第一个进程
    DO WHILE ddRet > 0
        szExeFile = RIGHT(stPE, MAX_PATH)
        szExeFile = LEFT(szExeFile, AT(0h00, szExeFile)-1)
        IF UPPER(szExeFile) == UPPER(szFileName)
            ddPID = CTOBIN(SUBSTR(stPE,9,4), "4RS")
            dhProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, ddPID)
            blRet = .T.
            EXIT
        ENDIF
        ddRet = Process32Next(dhSnapshot, @stPE)    && 下一个进程
    ENDDO
    CloseHandle(dhSnapshot)
    RETURN blRet
ENDFUNC

FUNCTION _TerminateProcess(szFileName)
    LOCAL dhProcess, ddExitCode
    dhProcess = 0
    ddExitCode = 0
    IF _IsProcessFileName(szFileName, @dhProcess)
        **GetExitCodeProcess(dhProcess, @ddExitCode)
        **RETURN (TerminateProcess(dhProcess, ddExitCode) != 0)
        RETURN (TerminateProcess(dhProcess, 0) != 0)
    ENDIF
    RETURN .F.
ENDFUNC
2017-09-20 08:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480775-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.249605 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved