Есть ли способ получить доступ к файлам справки VBA из командной строки
Вопрос
Мне нужно будет написать несколько модулей vba для проекта, над которым я работаю, и я предпочел бы использовать SciTE вместо встроенного редактора в Office.
SciTE позволяет перенаправить эффект нажатия клавиши F1 на произвольную команду с выделенным текстом в качестве аргумента.Есть ли какой-либо способ использовать эту функциональность для поиска соответствующих файлов .chm?
Я предполагаю, что нет, учитывая, что справка для vba распределена по нескольким файлам, но я надеюсь, что кто-нибудь сможет доказать, что я ошибаюсь...
Мне особенно интересно, может ли кто-нибудь предложить способ узнать, в каком chm-файле находится справка конкретной библиотеки, просто по имени функции с полными разделителями.
Решение
Основные файлы хранятся (во всяком случае, для Office 2003) в Program Files\OFFICE11\1033
, но доступ к страницам внутри них может быть немного затруднен, поскольку Microsoft постепенно пришлось отказаться от возможности копаться в файлах CHM на протяжении многих лет из-за соображений безопасности.Эта страница (Скачать) содержит некоторую полезную информацию о том, что все еще может быть возможно в том, что касается ссылок на определенные страницы внутри CHM
Сказав это, я не думаю, что этот файл является справкой по умолчанию, показываемой большинству пользователей в настоящее время, но он достаточно близок к этому, большую часть времени отсутствует только настройка Office 2007.Похоже, что интерактивная справка установлена по умолчанию, если вы специально не отключите ее во время установки Office.URL-адреса, я думаю, не очень удобны для SEO, поэтому их невозможно угадать.Я полагаю, вы могли бы позаимствовать хитрый трюк у мошенников и создать URL-адреса, которые указывают на верхнюю ссылку в Google, таким образом: Диапазон.
Редактировать: Ссылка на кэш Google?
Другие советы
Другой подход заключается в использовании программы командной строки справки HTML HH.EXE либо для отображения определенных страниц, либо для декомпиляции определенного CHM в HTML-файлы.
Перейдите в папку, указанную Lunatik в командном окне, и введите эту команду:
hh -decompile html vbaac10.chm
^^
# ac is for Access; use xl for Excel, wd for Word, etc
Это создаст папку "html" под ней и заполнит ее большинством файлов, которые пошли на создание файла CHM.Результирующие HTML-файлы можно открыть непосредственно в вашем браузере, хотя они не найдут связанных с ними таблиц стилей или скриптов, адреса которых указаны в их расположении в файлах CHM.Однако таблицы стилей и скрипты извлекаются, так что вы тоже можете с ними работать.
Также взгляните на XML-файлы в папке 1033, например VB_ACTOC.XML - это оглавление справки Access VBA.Он содержит тематические узлы с метками и URL-адресами для каждого элемента в файле справки:
<topic>
<label>CheckBox Object</label>
<url>mk:@MSITStore:vbaac10.chm::/html/acobjCheckBox.htm</url>
</topic>
мк: и т.д...URL-адрес можно ввести в командную строку HH, чтобы открыть этот раздел в обычном окне справки HTML.Кроме того, он показывает исходное имя файла CHM и относительный путь к файлу при декомпиляции.
hh mk:@MSITStore:vbaac10.chm::/html/acobjCheckBox.htm
Работая с этими файлами, вы могли бы создать скрипт для поиска / grep файлов по ключевому слову и отображения их в браузере, или вы могли бы преобразовать файлы в какую-нибудь базу данных или другие возможности поиска для работы со справочной системой SciTE на основе команд.
Некоторые сайты с дополнительной информацией об использовании HH.EXE:
-
советы по использованию командной строки HH и ссылки на другие сайты
-
альтернативная / дополняющая программа к HH.EXE для работы с файлами CHM
Сильно вдохновленный ответом Лунатика, добавляющий:
command.help.$(file.patterns.vb)=http://www.google.co.uk/search?hl=en&newwindow=1&q=site%3Amsdn.microsoft.com+%222003+VBA%22+$(CurrentWord)
command.help.subsystem.$(file.patterns.vb)=2
к моему файлу vb.properties дает мне разумный способ обхода (загружает страницу результатов поиска Google с критериями поиска:
site:msdn.microsoft.com "2003 VBA" $(CurrentWord)
Очевидно, нет гарантий, что это приведет меня на полезную страницу, но тогда встроенная справка в редакторе VBA также не так надежна в этом вопросе...
Может ли кто-нибудь, кто лучше знает SciTE, предложить более элегантное решение?