Excel (2010) HYPERLINK: как вызвать файл с аргументами командной строки и пробелами в пути?

2

Я работаю над документом Excel, чтобы сделать структуру папок (проекта), используя HYPERLINK s для важных файлов и папок (Word / Excel и т. д.).

Поскольку мы также используем TFS, я хочу добавить возможность проверки и регистрации прямо из листа Excel. Универсальная посадочная и обзорная страница.

Если бы я просто

=HYPERLINK("C:\work\TF.exe";"simple test")

Я получаю предупреждение безопасности, но программа выполняется.

В конце концов, я хочу что-то вроде

=HYPERLINK("C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\TF.exe status $/MyProject/Documents /recursive";"Find local Check Outs in Document folder")

Однако это не работает для пробелов в пути к файлу, а также для аргументов командной строки. Есть ли способ сделать этот запуск без использования VB? Даже если я обертываю части гиперссылки кавычками (используя двойные двойные кавычки для Excel: "" - & gt; "), ничего не улучшается, я получаю ошибку" файл не найден ".

И ... только только если мне нужно использовать VB (мне не нравится предупреждение о безопасности), что будет лучшим способом сделать это?

Andreas Reiff
источник

Ответы:

8

Альтернативой является создание ярлыка с соответствующими ключами командной строки, встроенными в него. Затем вы можете гиперссылку на ярлык. Обратите внимание, что ярлык имеет расширение .lnk.

Если вы хотите сделать что-то более сложное, чем запуск одного исполняемого файла с переключателями, вы можете создать ссылку на пакетный скрипт (.bat).

Anthony DiSanti
источник
4
Или сделать то же самое с командным файлом ( .bat ), который должен быть более универсальным, чем ярлык.
Bob
Это не позволяет мне использовать параметры (например, ячейка с путем), но все же работает нормально, просто немного накладных расходов, и я мог бы перейти к решению VB позже. Большое спасибо!
Andreas Reiff
2

Насколько я знаю, не возможно использовать HYPERLINK вот так - кроме как с хорошим трюком Энтони.

Однако пробелы в гиперссылке не имеют значения, если путь указан в кавычках.

Чтобы решить эту проблему, вам, возможно, придется использовать VBA, если параметры командной строки должны быть динамическими или если вы не хотите использовать anthonys Approch по другим причинам.

Это был бы аккуратный быстрый способ:

Shell "C:\Program Files (x86)\Notepad++\notepad++.exe -notabbar", vbMaximizedFocus

или использовать ваш код:

public sub demo()
  Shell "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\TF.exe status $/MyProject/Documents /recursive"
end sub

Кстати, при выполнении файлов по гиперссылкам обычно есть и должно быть предупреждение. Так что, если вы не хотите использовать HYPERLINK из-за «не люблю предупреждений», вы их тоже там получите;)

С другой стороны - решение VBA позволяет избежать предупреждений: если вы подпишите рабочую книгу доверенной подписью или используете ее в папке, которая настроена как доверенная для макросов.

Jook
источник
Спасибо, я мог бы пойти на это в конце концов, чтобы иметь путь только в одной ячейке, а затем сделать так, чтобы другие ячейки просто ссылались на это и вызывали разные файлы с параметрами.
Andreas Reiff