我正在创建一个电子表格,其中包含脚本,这些脚本将运行并从其他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。这就是为什么我需要动态链接。
1条答案
按热度按时间bf1o4zei1#
我不相信普通的文件系统对象可以处理http源。
如果可以先在Windows资源管理器中打开sharepoint位置,则可以在代码中使用资源管理器栏中显示的链接。
有关详细信息,请参阅此讨论/https://www.mrexcel.com/board/threads/loop-through-a-sharepoint-folder-and-open-in-excel.1176257/