Dim ParentPath As String: ParentPath = "\"
Dim ThisWorkbookPath As String
Dim ThisWorkbookPathParts, Part As Variant
Dim Count, Parts As Long
ThisWorkbookPath = ThisWorkbook.Path
ThisWorkbookPathParts = Split(ThisWorkbookPath, _
Application.PathSeparator)
Parts = UBound(ThisWorkbookPathParts)
Count = 0
For Each Part In ThisWorkbookPathParts
If Count > 0 Then
ParentPath = ParentPath & Part & "\"
End If
Count = Count + 1
If Count = Parts Then Exit For
Next
MsgBox "File-Drive = " & ThisWorkbookPathParts _
(LBound(ThisWorkbookPathParts))
MsgBox "Parent-Path = " & ParentPath
但如果没有,这应该足够了。
溶液B:**
Dim ThisWorkbookPath As String
ThisWorkbookPath = ThisWorkbook.Path
MsgBox "Working-Directory = " & ThisWorkbookPath
Sub openPath()
Dim path As String
path = Application.ActivePresentation.path
Shell Environ("windir") & "\explorer.exe """ & path & "", vbNormalFocus
End Sub
Public Function GetDirectoryName(ByVal source As String) As String()
Dim fso, oFolder, oSubfolder, oFile, queue As Collection
Set fso = CreateObject("Scripting.FileSystemObject")
Set queue = New Collection
Dim source_file() As String
Dim i As Integer
queue.Add fso.GetFolder(source) 'obviously replace
Do While queue.Count > 0
Set oFolder = queue(1)
queue.Remove 1 'dequeue
'...insert any folder processing code here...
For Each oSubfolder In oFolder.SubFolders
queue.Add oSubfolder 'enqueue
Next oSubfolder
For Each oFile In oFolder.Files
'...insert any file processing code here...
'Debug.Print oFile
i = i + 1
ReDim Preserve source_file(i)
source_file(i) = oFile
Next oFile
Loop
GetDirectoryName = source_file
End Function
在这里你可以调用函数:
Sub test()
Dim s
For Each s In GetDirectoryName("C:\New folder")
Debug.Print s
Next
End Sub
9条答案
按热度按时间yftpprvb1#
当用户打开Excel文档
D:\db\tmp\test1.xlsm
时:CurDir()
返回C:\Users\[username]\Documents
ActiveWorkbook.Path
返回D:\db\tmp
因此
CurDir()
有一个系统默认值,可以更改。ActiveWorkbook.Path
不会因同一个保存的工作簿而改变。例如,当您执行"文件/另存为"命令并在文件/目录选择对话框中选择一个随机目录时,
CurDir()
会发生变化。然后单击取消跳过保存。但CurDir()
已经更改为上次选择的目录。[ADD]恢复不同应用程序的VBA
1.应用程序.当前项目.路径=〉D:\db\tmp
1.活动工作簿。路径=〉D:\db\tmp
1.应用程序。默认文件路径=〉C:\用户[用户名]\文档
1.当前目录()=〉C:\窗口\系统32
1.应用程序。会话。存储(1)。文件路径=〉D:\程序数据\Outlook\myOutlookDocX.pst
1.活动演示。路径=〉D:\db\tmp
1.应用程序. ActiveDocument.路径=〉D:\db\tmp
1.应用程序.活动文档.全名=〉D:\db\tmp\test1.docx
1.应用程序. StartupPath =〉C:\用户[用户名]\应用程序数据\漫游\microsoft\word\启动
uajslkp62#
根据您要查找的内容,您有几个选项。
Workbook.Path
返回已保存工作簿的路径。Application.Path
返回Excel可执行文件的路径。CurDir
返回当前工作路径,这可能默认为“我的文档”文件夹或类似文件夹。还可以使用windows脚本 shell 程序对象的.CurrentDirectory属性。
但这应该会得到和刚才一样的结果
rfbsl7qr3#
可能是ActiveWorkbook尚未保存...
请尝试
CurDir()
。dly7yett4#
验证码:
path = ActiveWorkbook.Path
返回空白,因为您尚未保存工作簿。
若要解决问题,请返回Excel工作表,保存工作表,然后再次运行代码。
这一次它不会显示空白,但会显示它所在的路径(当前文件夹)
希望能帮上忙。
kyvafyod5#
仅对路径本身(不带工作簿名称)使用
Application.ActiveWorkbook.Path
,或对带工作簿名称的路径使用Application.ActiveWorkbook.FullName
。9jyewag06#
这是我用来在资源管理器窗口中打开当前路径的VBA:
微软文档:
CurDir
Function***第一个e第一个f第一个x
Shell
Functionholgip5t7#
如果您真的是指纯工作目录,这应该适合您。
但如果没有,这应该足够了。
ykejflvf8#
简单示例如下:
wkftcu5l9#
使用这些代码并享受它。
在这里你可以调用函数: