Часто требуется быстро найти папку, в которой находится открытый активный файл, и выделить или выбрать активный файл при работе с различными программными приложениями. Быстрый поиск постоянной папки, необходимой для поиска связанных файлов в той же папке, переименования открытых файлов или постоянной папки или перемещения файла в другую связанную папку. Текущие параметры требуют навигации по множеству папок, чтобы найти и найти конкретную папку, в которой она похоронена с кучей других подобных файлов (аналогично поиску иголки в стоге сена). Пакет Microsoft Office имеет встроенную функцию под названием «расположение документа», которую можно добавить на панель быстрого доступа. Но он позволяет видеть только расположение папки или полный путь, но не доступна команда или ключ с одним щелчком (AFAIK), чтобы удобно перейти к этой папке и выделить / идентифицировать открытый файл, чтобы можно было выполнить дальнейшую операцию (например, переименование, перемещение) в этом конкретном файле / папке. Это также относится к другим программным приложениям, в которых собственная программа имеет возможность получить полный путь, но не имеет возможности перейти к конкретному файлу / папке. Рассматривая одно из приложений пакета Microsoft Office (например, word) в качестве тестовых примеров, я мог представить себе следующие процессы:Can't load full resultsTry againRetrying...Retrying...

  • 1 Получите полный путь (D: \ Folder \ Subfolder \ Mywordfile.docx) к текущему открытому текстовому документу
  • 2 Закройте файл
  • 3 Команда проводника для выбора и выделения файла в папке с указанием полного пути (процесс 1)
  • Выполните операции с файлом / папкой по желанию вручную и дважды щелкните, чтобы вернуться к приложениям для работы с файлами (например, word).

В моей оценке выполнения вышеуказанных задач следующие возможности:

  • Задача 1 В Microsoft Word есть встроенная функция, называемая «расположение документа», которая позволяет получить полный путь к открытому документу и в настоящее время можно скопировать путь к файлу в буфер обмена.
  • Задача 2 Закройте файл (Ctrl + W или Ctrl + F4)
  • Код AHK задачи 3 для команды проводника для выбора файла по заданному полному пути (доступно в задаче 1)

Я столкнулся с трудностями в Задаче 3, и я пробовал каждое из них, но пока безуспешно

Clipboard := “fullpath” ; Full path (D:\Folder\Subfolder\Mywordfile.docx ) copied from Word 

Run explorer /e, “Clipboard” 

Run %COMSPEC% /c explorer.exe /select`, "%clipboard%"

Пока что указанная выше команда проводника приводит меня только в папку с документами, а не в определенном месте папки (путь в Задаче 1). Мне любопытно узнать, какой код проводника будет правильным для выбора файла по заданному полному пути в буфере обмена. Благодарим за поддержку кода AHK или лучший способ выполнить эту задачу. Заранее спасибо.

1
Rhinemine 8 Май 2016 в 19:39

3 ответа

Лучший ответ

Я не понимаю, почему ваш пример кода не работает. Я подозреваю, что это из-за лишних персонажей.

После выполнения этой команды откроется проводник Windows, в котором будет выбран нужный файл (если он существует).

FullPathFilename := "e:\temp\test.csv"
Explorer := "explorer /select," . FullPathFilename
Run, %Explorer%
2
Ro Yo Mi 8 Май 2016 в 22:45

Не знаю, пробовали ли вы другой подход, но я думаю, что он проще и короче:

  • 1) Сохраните полный путь к документу в строке: oldfile = ActiveDocument.FullName

  • 2) Сохранить как документ с помощью ActiveDocument.SaveAs

  • 3) Удалите старый файл с помощью Kill oldfile

Все это напрямую из VBA, без использования оболочки Explorer. То же самое и для других приложений.

Вот полностью рабочий код для документов Word:

Sub RenameActiveDoc()

    Dim oldfile As String

    Set myDoc = ActiveDocument

    '1) store current file
    oldfile = myDoc.FullName

    '2) save as the active document (prompt user for file name)
    myDoc.SaveAs FileName:=InputBox("Enter new name", "Rename current document", myDoc.Name)

    '3) Delete the old file with
    On Error GoTo FileLocked
    Kill oldfile
    On Error GoTo 0

    Exit Sub

FileLocked:
    MsgBox "Could not delete " & oldfile, vbInformation + vbOKOnly, "File is locked"

End Sub
2
ib11 10 Май 2016 в 02:36

С вкладом Ро Йо Ми Я могу предложить следующее решение. Однако я предполагаю, что может быть лучшее решение этой задачи.

 ;;; Customize Document Location (Choose form All Commands) in Quick Access Toolbar and get its position (#4 for my case)
#If WinActive("ahk_class OpusApp") || WinActive("ahk_class XLMAIN") || WinActive("PPTFrameClass")
#p:: ;Close Word/Excel/PowerPoint Document and Locate in Explorer Folder Location
clipboard = ;empty the clipboard
Send !4 ; Select full path while document location at #4 position in Quick Access toolbar
Send ^c ; copy the full path
ClipWait ; waits for the clipboard to have content
Send {esc}
Send, ^{f4} ; Close opened document only but keep Word/Excel/PPT program running
Explorer := "explorer /select," . clipboard
Run, %Explorer%\
return
0
Community 23 Май 2017 в 12:31