我写的一个过程由于调用很多excel文件,所以在执行时会占用很多cpu资源,从而导致程序运行时无法接受其它响应,也就是程序完全被这个过程占用。
  请问如何解决?盼赐教

解决方案 »

  1.   

    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
    Private Const SYNCHRONIZE As Long = &H100000
    Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)Private Sub Command1_Click()
        Dim pId As Long
        Dim pHnd As Long
        pId = Shell("C:\Program Files\Microsoft Office\Office\Excel.exe", vbNormalNoFocus)
        pHnd = OpenProcess(PROCESS_ALL_ACCESS, 0, pId)
        MsgBox ("Hello!")
        Call CloseHandle(pHnd)
    End Sub
      

  2.   

    '但是我还是不太明白。
    '我举个例子:
    private function myfun(...)
      ...'其中调用了很多excel文件,如下
      Dim xexl As Object  
      Set xexl = CreateObject("Excel.Application")
      xexl.Workbooks.Open ("test1.xls")
      ...'对test1.xls有很多操作,test1.xls有很多数据
      xexl.Workbooks("test1.xls").Close (True)
    end function
    ''
    Private Sub Command1_Click()
        call myfun(...)'调用myfun过程之行时间太长,而且程序“死”这里,要很长时间
        MsgBox ("Hello!")
    End Sub'如何解决?
      

  3.   

    在对打开的Excel做动作的时候加入一个Doevents语句,试试看
      

  4.   

    Doevents语句怎么加啊?我以前没用过vb,所以很多东西不熟。
      

  5.   

    Do While Not (File).Eof
        Doenents
        'you Code
      Loop