Excel vba 新建文件夹 报错问题! 急求!!!!

我写了几行代码。当FName & "\" & "生成表"这个文件夹存在的时候,删掉它,创建文件夹;当FName & "\" & "生成表"这个文件夹不存在的时候,直接创建该文件夹。不知道为什么每运行几次就会报错?(错误75 路径/文件访问错误)。
报错之后点击调试,不做修改再运行就好了,为什么?求大大大神解释!!!!!!!

'新建生成表文件夹。
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(FName & "\" & "生成表") Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set F = fs.GetFolder(FName & "\" & "生成表")
F.Delete
End If
MkDir FName & "\" & "生成表"
Shell "explorer " & FName & "\" & "生成表", vbNormalFocus

第1个回答  2012-12-12
删掉文件夹没有必要用FileSystemObjectFileSystemObject吧,问题应该出在你两次创建FileSystemObject,在没有完全准备好FileSystemObject的情况下就开始了删除。
不用FileSystemObject更简单了。

If Dir(FName & "\" & "生成表", vbDirectory) <> "" Then
RmDir FName & "\" & "生成表"
End If

If Len(Dir(FName & "\" & "生成表",vbDirectory)) = 0 Then
MkDir FName & "\" & "生成表"
End If追问

老兄 我用你的代码也出现了一样的问题!还是错误75啊.

还有,我的报错是在MkDir FName & "\" & "生成表"

追答

检查一下你的变量FName在运行过程中有没有改变吧?跟踪调试一下FName

第2个回答  2012-12-13
Sub 查找工作簿并重建()
Dim Wb$
Dim fs As FileSearch
On Error Resume Next
Application.DisplayAlerts = False
Mypath = "D:\FName" '假如文件放在d:\FName文件夹
Set fs = Application.FileSearch
fs.LookIn = Mypath
fs.Filename = "*.xls"
fs.Execute
'Workbooks.Add
'ActiveWorkbook.SaveAs Mypath & "\生成表" '程序到此就可结束,另存为已经把原来文件覆盖,后面是查找对比,删除,重建。
For i = 1 To fs.FoundFiles.Count
If fs.FoundFiles(i) = Mypath & "\生成表.xls" Then _
Kill Mypath & "\生成表.xls"
Next
Workbooks.Add
ActiveWorkbook.SaveAs Mypath & "\生成表"
End Sub

文件夹程序
Sub 查找文件夹并重建()
On Error Resume Next
Application.DisplayAlerts = False
Mypath = "D:\FName"
MyName = Dir(Mypath, vbDirectory)
Do While MyName <> ""
If MyName = "生成表" Then Kill Mypath & "\生成表": Exit Do
MyName = Dir
Loop
MkDir "D:\生成表"
End Sub
第3个回答  2012-12-12
Sub Macro1()
FName = "D:\MyDoc"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(FName & "\" & "生成表") Then
' Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(FName & "\" & "生成表")
f.Delete
For i = 1 To 10: DoEvents: Next
End If
MkDir FName & "\" & "生成表"
Shell "explorer " & FName & "\" & "生成表", vbNormalFocus
End Sub追问

您好,这条语句为什么有用呢?回答了我给你加分~~ 谢谢!

追答

延时啊。你又删除又创建的,系统来不及反应啊。

追问

我刚才运行又报错了。好像是延时延得不够,你看是不是要把那个10改成100?

追答

嗯。

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网