我在 Excel2010 工作表的 B 列中列出了工作编号,我希望能够单击每个值并打开我们服务器上的相应文件夹(其中包含该工作所需的所有文件)。问题是这些文件夹是由人创建的,并且是人可读的。
例如,B 列可能包含职位“J9600”,并且每个后续列包含其他信息,但在服务器上,该文件夹的名称为“J9600 - Smith 先生 - jobtitlehere”,并且此文件夹名称是手动输入的(因此容易偏离标准、出现错误和拼写错误)。
有没有办法说“在这个位置打开一个以 J9600 开头的文件夹”
答案1
据我所知没有,至少不是直接的。由于它是 Excel,您可以尝试为其编写一个宏,列出具有名称的条目的服务器目录J9600*
,如果只有一个匹配项,则使用资源管理器打开它或打开任何匹配的文件夹。
对于打开文件夹的方法,您可以采取以下答案:如何使用 VBA 在 Windows 资源管理器中打开文件夹?
要找到搜索该文件夹的解决方案,请查看这。
现在,具有项目名称的列必须调用一个将其内容作为参数的函数并在项目目录中查找该函数。
使用上述来源,您最终可能会得到一个类似于以下内容的过程,您可以通过为其提供 JobID 来调用该过程,在这种情况下它将开始JobID*
在服务器目录中查找。
Sub openServerDirectory(needle As String)
Dim varDirectory As Variant
Dim flag As Boolean
Dim i As Integer
Dim strDirectory As String
strDirectory = "\\server\directory"
i = 1
flag = True
varDirectory = Dir(strDirectory, vbDirectory)
needle = needle & "*"
While flag = True
If varDirectory = "" Then
flag = False
Else
If varDirectory Like (needle) Then
Shell "C:\WINDOWS\explorer.exe """ & (strDirectory & varDirectory) & "", vbNormalFocus
End If
'returns the next file or directory in the path
varDirectory = Dir
i = i + 1
End If
Wend
End Sub