列出子文件夹中其他excel文件的文件名

tpgth1q7  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(325)

我正在创建一个电子表格,其中包含脚本,这些脚本将运行并从其他csv文件中获取信息作为依赖项。我创建了一个简单的文件夹结构:
1./main * 我的电子表格位于此处
1./main/Raw Reports * 原始csv文件存储在此处
1./main/Completed Reports * 运行脚本时创建的电子表格
我打算在/Raw Reports中列出文件名,以确定在继续之前是否所有必需的csv文件都在其中。
我也一直在尝试使用一个更短的文件路径,因为我打算共享一个文件夹,这个文件夹将被压缩并在办公室里传递,我不能坚持一个静态的文件/文件夹路径。我希望实现一些像在当前目录前后添加通配符的东西,这样无论文件夹存储在桌面或文档下的什么位置,代码都可以运行。
以下是我的尝试:

Sub FileNames()

Dim FolderName As String
Dim FileName As String

MsgBox ThisWorkbook.FullName
MsgBox ActiveWorkbook.Path

'works
FolderName = ActiveWorkbook.Path & "/Raw Reports/"

'doesnt work - bad file name or number
FileName = Dir(FolderName & "/*")

Do While FileName <> ""
    MsgBox FileName
    FileName = Dir()
Loop

End Sub
Sub FileNames2()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer

Set objFSO = CreateObject("Scripting.FileSystemObject")

'doesnt work - path not found
Set objFolder = objFSO.GetFolder(ActiveWorkbook.Path)

For Each objFile In objFolder.Files

    MsgBox objFile.Name
    MsgBox objFile.Path
    
Next objFile
End Sub
Sub FileNames3()

Dim FilePath, FileOnly, PathOnly As String

FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))

SubFolder = PathOnly & "Raw Reports/"

'doesn't work - bad file name or number
FileName = Dir(SubFolder & "*")

Do While FileName <> ""
    MsgBox FileName
    FileName = Dir()
Loop

End Sub

我得到的错误像 * 坏的文件名或编号 *,我可以打印当前的路径罚款,但当我开始添加通配符,并试图向下移动一个文件夹,它的错误了。值得一提的是,我们的办公室使用sharepoint和onedrive,所以打印的文件路径是一个https://链接,而不是C:something something。这就是为什么我需要动态链接。

bf1o4zei

bf1o4zei1#

我不相信普通的文件系统对象可以处理http源。
如果可以先在Windows资源管理器中打开sharepoint位置,则可以在代码中使用资源管理器栏中显示的链接。
有关详细信息,请参阅此讨论/https://www.mrexcel.com/board/threads/loop-through-a-sharepoint-folder-and-open-in-excel.1176257/

相关问题