Бесчисленное количество раз в день я захожу в проводник Windows, щелкаю правой кнопкой мыши по файлу Excel, копирую как путь, затем захожу в «Выполнить», набираю Excel /r (вставка), и этот файл Excel открывается только для чтения.

Есть ли способ записать все это (и подобные рутинные задачи) в макрос, чтобы я мог легко открыть эти файлы таким образом? Например, Shift-Enter открывает файл как Excel только для чтения, как в механизме выше?

Слабое отношение к Как я могу открыть файл только для чтения из проводника Windows?

1 ответ1

4

AutoHotkey , безусловно, способ пойти сюда.

Пока вы нажимаете Shift-вправо, почему бы просто не открыть только для чтения?

редактировать: как упоминалось ниже, это не работает (?!?).

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

IfWinActive, ahk_class XLMAIN ^B:: ; hotkey is CTRL + B but can be changed to anything ExcelFileName := "C:\path\to\file.xlsx" ; this needs to be replaced with a variable Send, {LWINDOWN}r{LWINUP} ;opens Run WinWaitActive, Run, Send, excel{SPACE}/r{SPACE}ExcelFileName{Enter}

Если вы расскажете мне больше о том, как хранятся ваши файлы (какие-либо соглашения об именах? и т.д.) Я могу помочь вам найти путь к горячей клавише. Без этого все, что я могу придумать, это неприятный VBA -> AHK kludge из файла Excel, который вы хотите, например,

Sub GetPath() Dim CompletePath As String CompletePath = ActiveWorkbook.FullName MsgBox CompletePath End Sub

который вы могли бы затем сбросить в сценарий AHK как ExcelFileName .

редактировать 2: я думаю, с выделенным нужным файлом Excel Send {Ctrl Down}c{Ctrl Up} скопирует путь к файлу в буфер обмена, который затем можно передать как ExcelFileName := %clipboard% .

Попробуй это. Выделите свой файл и нажмите CTRL + B.

^B:: ; hotkey is CTRL + B but can be changed to anything Send {Ctrl Down}c{Ctrl Up} ; copies path to Clipboard (unverified) ExcelFileName := %clipboard% ; plaintext Send, {LWINDOWN}r{LWINUP} ; opens Run WinWaitActive, Run, Send, excel{SPACE}/r{SPACE}ExcelFileName{Enter}

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