假设某文件夹下包含若干层次的子文件夹,自文件夹下都有word文件,文件数也不一定,我写了代码,但在递归时不是提示错误就是读取文件内容不对,我的代码如下:
Sub A(ByVal str As String)
Dim FileName As String
Dim app As Word.Application
Set app = New Word.Application
Dim MyFSO As New FileSystemObject
Dim MyFolder As Folder
Dim sFolder As Folder
Dim MyFile As File
Set MyFolder = MyFSO.GetFolder(str)
FileName = MyFile.Name
Dim myRange1 As Word.Range
app.Visible = True
app.Documents.Open str + FileName
MsgBox str + FileName
Set myRange1 = ActiveDocument.Range(Start:=0, End:=ActiveDocument.Words(1).End)
Dim stra As String
stra = myRange1.Text
MsgBox stra
For Each sFolder In MyFolder.SubFolders
  Dim str1 As String
  str1 = str + sFolder.Name + "\"
  A (str1)
  Next
app.Quit
Set app = Nothing
End Sub
这里我是假设一个文件夹中只含一个文件的情况
提示错误在Set myRange1 = ActiveDocument.Range(Start:=0, End:=ActiveDocument.Words(1).End) ,提示实时错误462
远程服务器不存在或不能使用,要不没有错误提示,读取的子文件夹的内容是跟文件夹中文件的前两个字符? 应该怎么解决?

解决方案 »

  1.   

    我知道问题出在Activedocument,在递归时ActiveDocument没有改变,还是父文件夹的文件,怎么使ActiveDocument改变呢
      

  2.   

    我找到了原因,程序建立的对象没有被撤销,所以
    应该对错误进行捕捉,并在里面里面先对woed对象进行关闭
    然后,接着在打开,但我用ActiveDocument.close不行,应该怎么做呢
      

  3.   

    其实就相当于我调用了同一程序段两次以上出现实时错误462远程服务器不存在或不能使用,这个问题怎么解决,如何完全关闭上一次word进程或对象