Excel 运行时错误76未找到路径

Excel 运行时错误76未找到路径,excel,vba,runtime-error,Excel,Vba,Runtime Error,我有这个错误信息,我完全迷路了 我想我检查了所有可能出错的地方,也许你们中的一个可以看到错误或其他什么。我的大脑现在完全被阻塞了 提前谢谢 Option Explicit Public newestFile As Object Sub Scan_Click() Dim path As String Dim row As Integer: row = 2 Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("ETA

我有这个错误信息,我完全迷路了

我想我检查了所有可能出错的地方,也许你们中的一个可以看到错误或其他什么。我的大脑现在完全被阻塞了

提前谢谢

Option Explicit

Public newestFile As Object

Sub Scan_Click()
    Dim path As String
    Dim row As Integer: row = 2
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("ETA File Server")

    With ws
        Do
            If .Cells(row, 1).Value = "" Then Exit Do

            path = .Cells(row, 1).Value

            Application.StatusBar = "Processing folder " & path
            DoEvents

            If .Cells(row, 1).Value <> "Root" Then
                Call getNewestFile(path)

                .Cells(row, 9).Value = newestFile.DateLastModified
                .Cells(row, 10).Value = newestFile.Name

                Set newestFile = Nothing
                row = row + 1
            Else
                row = row + 1
            End If
        Loop
    End With

    Application.StatusBar = "Done"
End Sub

Private Sub getNewestFile(folderpath As String)
    Dim objFSO As Object, objFolder As Object, objFile As Object

    'get the filesystem object from the system
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(folderpath)

    'go through the subfolder and call itself
    For Each objFile In objFolder.SubFolders
        Call getNewestFile(objFile.path)
        DoEvents
    Next


    For Each objFile In objFolder.Files
        If newestFile Is Nothing Then
            Set newestFile = objFile
        ElseIf objFile.DateLastModified > newestFile.DateLastModified Then
            Set newestFile = objFile
        End If
    Next
End Sub
选项显式
作为对象的公共newestFile
子扫描_单击()
将路径设置为字符串
将行设置为整数:行=2
将ws设置为工作表
设置ws=ThisWorkbook.Sheets(“ETA文件服务器”)
与ws
做
如果.Cells(第1行).Value=”“,则退出Do
路径=.Cells(第1行).Value
Application.StatusBar=“处理文件夹”&路径
多芬特
如果.Cells(行,1).Value为“Root”,则
调用getNewestFile(路径)
.Cells(第9行).Value=newestFile.DateLastModified
.Cells(第10行).Value=newestFile.Name
Set newestFile=Nothing
行=行+1
其他的
行=行+1
如果结束
环
以
Application.StatusBar=“完成”
端接头
私有子getNewestFile(folderpath作为字符串)
对象为Dim objFSO,对象为objFolder,对象为objFile
'从系统中获取文件系统对象
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objFolder=objFSO.GetFolder(folderpath)
'遍历子文件夹并调用自身
对于objFolder.SubFolders中的每个objFile
调用getNewestFile(objFile.path)
多芬特
下一个
对于objFolder.Files中的每个objFile
如果newestFile什么都不是,那么
设置newestFile=objFile
ElseIf objFile.DateLastModified>newestFile.DateLastModified然后
设置newestFile=objFile
如果结束
下一个
端接头

好吧,我找到了答案!Windows只能处理255个字符以下的路径

因此,您所要做的就是在路径之前添加
\\?\
,例如服务器地址上的
\?\c:\users
,因此您必须添加
\\?\unc
-->
\\?\unc\servername\path


希望这能帮到你

这可能是由于要复制的文件的广泛文件夹和子文件夹导致文件名过长所致

在复制之前,请尝试缩短所有文件夹/子文件夹的名称长度

它解决了我的问题,希望也解决了你的问题


关于,

当我试图访问的文件位于SharePoint中时,我会遇到此错误。 作为一种解决方法,我将在资源管理器视图中打开该链接(SharePoint链接-库-连接和导出-使用资源管理器打开)。一旦在资源管理器视图中设置了SP,它将顺利运行。 要解决这个问题,我们必须将SP链接映射到驱动器,并调用驱动器地址而不是SP链接。
链接-

我有完全相同的症状,但不可理解的是,我可以通过取消选中启动应用程序的快捷方式“以管理员身份运行”来消除症状:\


可能这对出现相同症状的人很有帮助,但没有其他帮助。

哪一行为objFolder中的每个objFile提供了错误
。子文件夹
在调用
getnewest文件
之前执行一次
Debug.print folderPath
并确保路径正确。路径实际上是正确的,但是路径是251个字符长,如果这可能是一个问题,我不认为,但是…是的,路径可以超过251个字符。但是如果没有找到路径,99.9%的时间意味着它不是有效路径:P