Нашел интересный код от KukLP
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Function Kill_Proc() As Boolean
Dim Process As Object, wb As Workbook, PID&
PID = GetCurrentProcessId
For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
If Process.Caption Like "EXCEL.EXE" And Process.Processid <> PID Then
Process.Terminate
End If
Next
End Function
Как закрывать процесс с номером PID - не совпадающим с "родным" номером - это понятно, а вот как заставить его открыть файл?
Типа
Option Explicit
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Sub Open_File()
Dim Process As Object, wb As Object, PID&
PID = GetCurrentProcessId
For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
If Process.Caption Like "EXCEL.EXE" And Process.Processid <> PID Then
Set wb = Process.Workbooks.Open("C:\1.xls")
дает ошибку - 438- не поддерживается метод...
End If
Next
End Sub
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Function Kill_Proc() As Boolean
Dim Process As Object, wb As Workbook, PID&
PID = GetCurrentProcessId
For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
If Process.Caption Like "EXCEL.EXE" And Process.Processid <> PID Then
Process.Terminate
End If
Next
End Function
Как закрывать процесс с номером PID - не совпадающим с "родным" номером - это понятно, а вот как заставить его открыть файл?
Типа
Option Explicit
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Sub Open_File()
Dim Process As Object, wb As Object, PID&
PID = GetCurrentProcessId
For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
If Process.Caption Like "EXCEL.EXE" And Process.Processid <> PID Then
Set wb = Process.Workbooks.Open("C:\1.xls")
дает ошибку - 438- не поддерживается метод...
End If
Next
End Sub