我有一个在其他机器上工作正常的宏,尤其是我办公室的Win XP SP3上的Excel 2010。但是,尝试使用Excel 2013在我的Win 8.1笔记本电脑上运行完全相同的代码,我一直得到一个"错误70:权限被拒绝"
我研究过,大多数讨论的重点是尝试访问打开或锁定的文件。在这种情况下,我计算文件和子文件夹。
完整的代码在这里:
Option Explicit
Private FSO As Object
Private cFiles(1 To 3) As Long
Private cFolders(1 To 3) As Long
Sub Folders()
Dim i As Long
Dim sFolder As String
Dim iStart As Long
Dim iEnd As Long
Dim fOutline As Boolean
cFiles(1) = 0: cFiles(2) = 0: cFiles(3) = 0
cFolders(1) = 0: cFolders(2) = 0: cFolders(3) = 0
Set FSO = CreateObject("SCripting.FileSystemObject")
sFolder = "N:\E-Pros Admin\NEW HUB\Division 4 Order Processing\Contracts\CONTRACTS PRIOR TO 05-07-14\"
SelectFiles sFolder
MsgBox "# of files: " & cFiles(1) & vbNewLine & _
"# of folders with files: " & cFiles(2) & vbNewLine & _
"# of folders with no files " & cFiles(3) & vbNewLine & _
"# of folders: " & cFolders(1) & vbNewLine & _
"# of folders with subfolders: " & cFolders(2) & vbNewLine & _
"# of folders with no subfolders: " & cFolders(3)
Set FSO = Nothing
End Sub
'-----------------------------------------------------------------------
Sub SelectFiles(Optional sPath As String)
'-----------------------------------------------------------------------
Dim oSubFolder As Object
Dim oFolder As Object
If FSO Is Nothing Then
End If
Set oFolder = FSO.GetFolder(sPath)
cFiles(1) = cFiles(1) + oFolder.Files.count
If oFolder.Files.count > 0 Then
cFiles(2) = cFiles(2) + 1
Else
cFiles(3) = cFiles(3) + 1
End If
cFolders(1) = cFolders(1) + 1
If oFolder.SubFolders.count > 0 Then
cFolders(2) = cFolders(2) + 1
For Each oSubFolder In oFolder.SubFolders
SelectFiles oSubFolder.Path
Next
Else
cFolders(3) = cFolders(3) + 1
End If
End Sub
抛出错误的代码位于以下函数/代码中:
Sub SelectFiles(Optional sPath As String)
'-----------------------------------------------------------------------
Dim oSubFolder As Object
Dim oFolder As Object
If FSO Is Nothing Then
End If
Set oFolder = FSO.GetFolder(sPath)
cFiles(1) = cFiles(1) + oFolder.Files.count **<== This line throws Error 70 Permission Denied**
If oFolder.Files.count > 0 Then
cFiles(2) = cFiles(2) + 1
Else
我已经检查了所有权限,DCOM 32和64位,所有权限都超出了Excel(每个人都可以访问所有内容,但仍然没有。完全沮丧。
真的很感激任何帮助。
谢谢,杰夫
答案 0 :(得分:0)
所谓的“交接点”NTFS“符号链接”是这个错误的罪魁祸首。 请参阅:http://support.microsoft.com/kb/930128/en
我用我的Windows 7系统试过了。从Windows XP中未更新。然而,例如"C:\Users\axel\Documents\Eigene Bilder"
有这样的交接点。如果FSO获得与Folder
对象这样的连接点,它将获得一个空白Files
集合的Folder对象,而不包含任何方法或属性。 SubFolders
集合也是如此。但他们并不是什么都不是。它们是物体。如果程序尝试访问这些集合,则会抛出Error 70 "Access denied"
。
作为一种解决方案,您可以在访问.Files和.SubFolders之前使用On Error Resume Next
,并在访问后使用此类交接点和On Error Goto 0
。但是不会计算交接点。
问候
阿克塞尔