【问题标题】:Opening a folder path but only knowing part of the folder name打开文件夹路径但只知道部分文件夹名称
【发布时间】:2018-01-18 03:09:11
【问题描述】:

我目前正在尝试制作宏以根据单元格内的文件名打开文件夹,这是我目前拥有的代码

Sub OpenFolder()

    Dim MyFolder As String
    Dim JobNumber As String
    Dim JobYearLeft As String
    Dim JobYear As String
    Dim FolderNumber As String
    Dim i As Integer

    JobNumber = Right(Range("A1"), Len(Range("A1")) - 3)
    JobYearLeft = Right(Range("A1"), Len(Range("A1")) - 1)
    JobYear = Left(JobYearLeft, Len(JobYearLeft) - 4)

    i = CInt(JobNumber)

    Select Case i
    Case 0 To 500
        FolderNumber = "0001_0500"
    Case 500 To 1000
        FolderNumber = "0501_1000"
    Case 1000 To 1500
        FolderNumber = "1001_1500"
    Case 1500 To 2000
        FolderNumber = "1501_2000"
    End Select

    If (JobYear = 17) Then
        MyFolder = "M:\2017\" & FolderNumber & "\"
    Else
        MyFolder = "M:\2016\" & FolderNumber & "\"
    End If

    MyFolder = Replace(MyFolder, " ", "")
    ActiveWorkbook.FollowHyperlink MyFolder

    MsgBox (MyFolder)
    MsgBox (i)
    MsgBox (JobNumber)
    MsgBox (FolderNumber)

End Sub

说我的文件夹路径是M:\2017\1501_2000\V171504******\ 其中**** 表示未知部分,并且该字符串的长度不是恒定的,V171504 是单元格“A1”中包含的值(MsgBox 用于我的测试以了解我是否获得了正确的值)。

编辑,这是我尝试过的目录

FindFirstFile = Dir$(MyFolder & "*" & "/")

If (FindFirstFile <> "") Then
    FindFirstFile = Replace(FindFirstFile, " ", "")
    ActiveWorkbook.FollowHyperlink FindFirstFile
Else

End If

这是发生的总体情况

Sub OpenFolder()

Dim MyFolder As String
Dim JobNumber As String
Dim JobYearLeft As String
Dim JobYear As String
Dim FolderNumber As String
Dim i As Integer

JobNumber = Right(Range("A1"), Len(Range("A1")) - 3)
JobYearLeft = Right(Range("A1"), Len(Range("A1")) - 1)
JobYear = Left(JobYearLeft, Len(JobYearLeft) - 4)

i = CInt(JobNumber)

Select Case i
    Case 0 To 500
    FolderNumber = "0001_0500"
        Case 500 To 1000
        FolderNumber = "0501_1000"
            Case 1000 To 1500
            FolderNumber = "1001_1500"
                Case 1500 To 2000
                FolderNumber = "1501_2000"
End Select

If (JobYear = 17) Then
    MyFolder = "M:\2017\" & FolderNumber & "\"
    Else
        MyFolder = "M:\2016\" & FolderNumber & "\"
End If

MyFolder = Replace(MyFolder, " ", "")

Dim file As String
    file = Dir$(MyFolder & Range("A1").Value & "*" & "/")

If (Len(file) > 0) Then
 MsgBox "found" & file
 file = Dir$()
 ActiveWorkbook.FollowHyperlink file
End If

我目前遇到错误

file = Dir$(MyFolder & Range("A1").Value & "*" & "\")

对于运行时错误“52” 错误的文件名或编号

【问题讨论】:

  • 你看过DIR Function吗?试一试,如果您有问题,请在此处发布。
  • 我有这个,但它似乎不起作用 FindFirstFile = Dir$(MyFolder & "*" & "/") If (FindFirstFile "") Then FindFirstFile = Replace(FindFirstFile, " ", "") ActiveWorkbook.FollowHyperlink FindFirstFile Else End If
  • 你可以在你的问题中添加它吗?
  • 按照上面的示例,它试图打开的链接 (MyFolder) 是 M:\2017\1501_2000`. What are you expecting MyFolder` 以包含?
  • 所以基本上我只知道文件夹名称的第一部分,我想打开一个包含单元格 A1 上的刺的文件夹

标签: vba excel


【解决方案1】:

我找到了如何让它工作

Sub OpenFolder()

Dim MyFolder As String
Dim JobNumber As String
Dim JobYearLeft As String
Dim JobYear As String
Dim FolderNumber As String
Dim i As Integer
Dim FirstFolder As String

JobNumber = Right(Range("A1"), Len(Range("A1")) - 3)
JobYearLeft = Right(Range("A1"), Len(Range("A1")) - 1)
JobYear = Left(JobYearLeft, Len(JobYearLeft) - 4)

i = CInt(JobNumber)

Select Case i
    Case 0 To 500
    FolderNumber = "0001_0500"
        Case 500 To 1000
        FolderNumber = "0501_1000"
            Case 1000 To 1500
            FolderNumber = "1001_1500"
                Case 1500 To 2000
                FolderNumber = "1501_2000"
End Select


If (JobYear = 17) Then
    FirstFolder = "M:\2017\" & FolderNumber & "\" '& Range("A1").Value & "*" & "\"
    Else
        MyFolder = "M:\2016\" & FolderNumber & "\" '& Range("A1").Value & "*" & "\"
End If

If (JobYear = 17) Then
    MyFolder = "M:\2017\" & FolderNumber & "\" & Range("A1").Value & "*" '& "\"
    Else
        MyFolder = "M:\2016\" & FolderNumber & "\" & Range("A1").Value & "*" '& "\"
End If

MyFolder = Replace(MyFolder, " ", "")

Dim OpenThisFolder As String
Dim GoToFolder As String

MyFolder = Dir(MyFolder, vbDirectory)

GoToFolder = FirstFolder & MyFolder & "\"
GoToFolder = Replace(GoToFolder, " ", "")

最终使用 vbdirectory

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 2015-08-05
    • 2011-02-11
    • 2016-06-25
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多