У меня есть список номеров работ для работы в столбце B на рабочем листе в Excel2010, я хочу иметь возможность щелкать каждое значение и открывать соответствующую папку на нашем сервере (которая содержит все виды файлов для работы). Проблема в том, что папки созданы людьми и удобочитаемы.

Например, столбец B может содержать задание "J9600", а каждый последующий столбец содержит другую информацию, но на сервере папка называется «J9600 - Mr Smith - jobtitlelehere», и это имя папки вводится вручную (поэтому допускается отклонение от стандартов, и ошибки, и просто плохая орфография).

Есть ли в любом случае сказать "открыть папку, в этом месте, которая начинается с J9600"

1 ответ1

0

Ни о чем я не знаю, по крайней мере, не напрямую. Так как это Excel, вы можете попытаться написать для него макрос, который перечисляет каталог сервера для записей с именем J9600* и, если есть только одно совпадение, откройте его с помощью проводника или откройте любую из соответствующих папок.

Для способа открыть папку вы можете взять такой ответ: Как открыть папку в Windows Explorer из VBA?

Для решения для поиска в этой папке посмотрите на это.

Теперь ваш столбец с именем проекта должен будет вызывать функцию, которая принимает его содержимое в качестве параметра и искать его в каталоге проекта.

Используя приведенные выше источники, вы можете получить процедуру, похожую на следующую, которую вы бы вызвали, указав ей 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .