VB6 如何扫描内存中已经打开的excel和word文档并自动将其保存?
hSnapShot=CreateToolhelpSnapshot(TH32CS_SNAPall,0)'获得进程“快照”的句柄Proc.dwSize=Len(Proc)lP...
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) '获得进程“快照”的句柄
Proc.dwSize = Len(Proc)
lPid = ProcessFirst(hSnapShot, Proc) '获取第一个进程的PROCESSENTRY32结构信息数据
I = 0
Do While lPid <> 0 '当返回值非零时继续获取下一个进程
If InStr(1, UCase(Proc.szExeFile), "EXCEL.EXE") Then
MsgBox ("请将打开的Excel表格保存并关闭,以免数据丢失。")
此处如何让其自动保存?
lPHand = Proc.th32ProcessID
lPHand = OpenProcess(1&, True, lPHand) '获取进程句柄
TMBack = TerminateProcess(lPHand, 0&) '关闭进程
CloseHandle lPHand
End If
I = I + 1
lPid = ProcessNext(hSnapShot, Proc) '循环获取下一个进程的PROCESSENTRY32结构信息数据
Loop
CloseHandle hSnapShot '关闭进程“快照”句柄
88900好,你所列出的语句是要调用EXCEL程序和WORD程序才能保存,我如何在不调用此程序而是利用系统的存储功能将上述语句所发现的文档保存并关闭,例如是用写字板打开的WORD文档或其它软件打开的EXCEL表格。 展开
Proc.dwSize = Len(Proc)
lPid = ProcessFirst(hSnapShot, Proc) '获取第一个进程的PROCESSENTRY32结构信息数据
I = 0
Do While lPid <> 0 '当返回值非零时继续获取下一个进程
If InStr(1, UCase(Proc.szExeFile), "EXCEL.EXE") Then
MsgBox ("请将打开的Excel表格保存并关闭,以免数据丢失。")
此处如何让其自动保存?
lPHand = Proc.th32ProcessID
lPHand = OpenProcess(1&, True, lPHand) '获取进程句柄
TMBack = TerminateProcess(lPHand, 0&) '关闭进程
CloseHandle lPHand
End If
I = I + 1
lPid = ProcessNext(hSnapShot, Proc) '循环获取下一个进程的PROCESSENTRY32结构信息数据
Loop
CloseHandle hSnapShot '关闭进程“快照”句柄
88900好,你所列出的语句是要调用EXCEL程序和WORD程序才能保存,我如何在不调用此程序而是利用系统的存储功能将上述语句所发现的文档保存并关闭,例如是用写字板打开的WORD文档或其它软件打开的EXCEL表格。 展开
2个回答
展开全部
一、上述代码都不要,只要复制代码即可:
Sub AutoSave()
Dim xlApp
Dim xlBook
Dim i As Integer
On Error Resume Next
Err.Clear
Set xlApp = GetObject(, "Excel.Application") '
If Err.Number = 0 Then
For i = 1 To xlApp.workbooks.Count
Set xlBook = xlApp.workbooks(i) '装入已经存在的EXCEL文件
If Not xlBook.saved Then xlBook.saved = True '自动保存
DoEvents
Next
End If
Err.Clear
Set xlApp = GetObject(, "Word.Application")
If Err.Number = 0 Then
For i = 1 To xlApp.documents.Count
Set xlBook = xlApp.documents(i) '装入已经存在的Word文件
If Not xlBook.saved Then xlBook.saved = True '自动保存
DoEvents
Next
End If
Set xlBook = Nothing '释放对象
Set xlApp = Nothing '释放对象
End Sub
二、调用很简单,只要在需要时写入
AutoSave 语句就行。
Sub AutoSave()
Dim xlApp
Dim xlBook
Dim i As Integer
On Error Resume Next
Err.Clear
Set xlApp = GetObject(, "Excel.Application") '
If Err.Number = 0 Then
For i = 1 To xlApp.workbooks.Count
Set xlBook = xlApp.workbooks(i) '装入已经存在的EXCEL文件
If Not xlBook.saved Then xlBook.saved = True '自动保存
DoEvents
Next
End If
Err.Clear
Set xlApp = GetObject(, "Word.Application")
If Err.Number = 0 Then
For i = 1 To xlApp.documents.Count
Set xlBook = xlApp.documents(i) '装入已经存在的Word文件
If Not xlBook.saved Then xlBook.saved = True '自动保存
DoEvents
Next
End If
Set xlBook = Nothing '释放对象
Set xlApp = Nothing '释放对象
End Sub
二、调用很简单,只要在需要时写入
AutoSave 语句就行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询