【发布时间】:2021-01-24 14:46:15
【问题描述】:
我有下面的代码循环遍历保存 excel 文件的路径上的文件夹并应用一组参数。该代码适用于我驱动器上的本地文件夹。但是,在 Onedrive 上保存的本地文件夹上,它不起作用并提供 错误 76“找不到路径”。
我认为问题在于Application.ActiveWorkbook.Path 提供的是链接而不是路径。
有人对如何解决这个问题有任何建议吗?谢谢。
Sub getfolders()
Dim objFSO As New FileSystemObject
Dim objFolder As Object
Dim objSubFolder As Object
Dim i As Integer
Dim FldName As String
Set objFolder = objFSO.GetFolder(Application.ActiveWorkbook.Path)
Lastrow = Cells(Rows.Count, "B").End(xlUp).Row ' guarda o indice da ultima linha com conteudo da coluna B. Mesmo havendo vazios identifca a ultima linha
Length = Range(Range("B8"), Range("B" & Lastrow)).Rows.Count ' dimensão da coluna C ate a ultima celula com conteudo começando na C7
For i = 0 To Length ' loop na coluna B
For Each objSubFolder In objFolder.SubFolders
(rest of the code...)
【问题讨论】:
-
只有从在线 OneDrive 打开文件,然后从那里在本地计算机上打开它,才会返回这种路径。在这种情况下,返回的路径也是正确的,但对于以您尝试的方式在文件夹项之间进行迭代没有用处。如果您直接从本地文件夹打开它,您将收到一个普通路径,并且能够执行您的请求。
-
您好,感谢您的回复。我不会在网上打开它。它是从一个正在同步的 oneedive 上的文件夹中打开的。为了清楚起见,我在主帖上添加了一张图片
-
恐怕你没有...否则,你应该获取你本地OneDrive文件夹的路径。你是怎么做到的?
-
请查看我在主帖中添加的图像 :) 我打开文件并运行宏的位置。