注册 登录
编程论坛 VFP论坛

word 人工关闭时不要提示保存

liunis 发布于 2023-04-24 17:14, 1481 次点击
word 人工关闭时不要提示保存,如何写
OLE.Documents.Close(.F.)  是自动关闭了
因为还要人工操作修改,因为都是临时文档并不要保存
有时一连打开10多个文档,关闭时都要提示
16 回复
#2
吹水佬2023-04-24 18:34
要修改又不要保存,可能不可能。
#3
东海ECS2023-04-24 18:59
保存,非常麻烦。以下是可以用来关闭Word文档并且不提示保存的VB代码:

ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges

使用此代码时,无论Word文档是否被更改,都不会提示用户保存更改。如果您确定您的更改不需要保存,这是很方便的选择。
#4
liunis2023-04-24 19:02
回复 3楼 东海ECS
谢谢。在VFP 这句要如何写?
#5
csyx2023-04-24 20:28
我也确定这是从 ChartGPT 的回答复制过来的 一本正经的胡说八道

[此贴子已经被作者于2023-4-24 20:29编辑过]

#6
zhken2023-04-24 21:04
Declare Integer WinExec in kernel32 string, integer  
MyCommand="TASKKILL /F /PID WINWORD.exe /T"   
= WinExec (MyCommand,0)

无论多少页面,试试一键关闭,看有无帮助
#7
吹水佬2023-04-24 21:40
是不是理解有问题
问题的是:程序运行过程中调用word打开文档,人工修改等操作后,人工关闭word时不想出现保存提示对话框。
注意的是:此时打开的word是外部进程,并交由用户掌控了。
#8
sostemp2023-04-25 08:54
以下是引用zhken在2023-4-24 21:04:56的发言:

Declare Integer WinExec in kernel32 string, integer  
MyCommand="TASKKILL /F /PID WINWORD.exe /T"   
= WinExec (MyCommand,0)

无论多少页面,试试一键关闭,看有无帮助


强制关闭,会导致Word文档错误的
#9
pvm20002023-04-25 09:14
以下是引用zhken在2023-4-24 21:04:56的发言:

Declare Integer WinExec in kernel32 string, integer  
MyCommand="TASKKILL /F /PID WINWORD.exe /T"   
= WinExec (MyCommand,0)

无论多少页面,试试一键关闭,看有无帮助


这种操作有点狠
#10
csyx2023-04-25 09:29
这十几个文档谁打开的?如果是你的程序打开的,只要还保留了对象引用,就可以用 OLE.Documents(1).Saved = .T. 使得关闭时不提示
问题是用户啥时候关闭你无法预知,顶多也就用定时器定时执行赋值
#11
liunis2023-04-25 09:56
是这样子的:有于需要从WORD模版复制文档后进行表格内容填写完打印,这个内容就不需要了,再者VFP测试WORD语句时经常出错,打开的WORD就会挂在那里,然后手动关闭会有提示。
OLE.Documents(1).Saved = .T.  由于改动了,依然会有提示。
#12
csyx2023-04-25 10:26
自然是改动后才需要赋值 .T.
因为修改和关闭这些动作都是你无法预知和控制的,所以我才说顶多只能用一个定时器定时执行这个赋值动作
#13
吹水佬2023-04-25 10:29
交给用户掌控后就不好管了
不想保存,她要保存也有多种方式,你管得几多。否则,保存不保存不重要,点多一下也无妨。  
或者可以试试:
1、用固定模板的,可先定义关闭事件过程。
2、任意文档的,可以试试用VBA的工程对象(VBProject)动态添加代码(关闭事件过程),然后才交给用户操作,等用户关闭时就会执行你定义的事件过程。
#14
csyx2023-04-25 10:58
以下是引用吹水佬在2023-4-25 10:29:42的发言:
或者可以试试:
1、用固定模板的,可先定义关闭事件过程。
2、任意文档的,可以试试用VBA的工程对象(VBProject)动态添加代码(关闭事件过程),然后才交给用户操作,等用户关闭时就会执行你定义的事件过程。


这方法可靠,但这是否会牵扯到要打开信任中心?
#15
吹水佬2023-04-25 14:05
以下是引用csyx在2023-4-25 10:58:24的发言:

这方法可靠,但这是否会牵扯到要打开信任中心?

要开启“信任对VBA工程对象模型的访问”
regKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\" + word.Version + "\Word\Security\AccessVBOM"
shell = CREATEOBJECT("WScript.Shell")
shell.RegWrite(regKey, 1, "REG_DWORD")
#16
csyx2023-04-25 14:26
开启方法不是关键,Office 的选项菜单中就有开启的 checkbox,关键是很多单位明令禁止开启,遇到这种情况就有些麻烦了
#17
吹水佬2023-04-25 15:08
以下是引用csyx在2023-4-25 14:26:12的发言:

开启方法不是关键,Office 的选项菜单中就有开启的 checkbox,关键是很多单位明令禁止开启,遇到这种情况就有些麻烦了

这个不能由人工去做,是在程序里开启,任务完成后关闭。
1