Ms word 用于定位驻留文件夹并突出显示活动文件的AHK代码

Ms word 用于定位驻留文件夹并突出显示活动文件的AHK代码,ms-word,autohotkey,Ms Word,Autohotkey,在使用不同的软件应用程序时,通常需要快速找到打开的活动文件的文件夹位置,并突出显示或选择活动文件。快速定位在同一文件夹中查找相关文件所需的驻留文件夹,重命名打开的文件或驻留文件夹,或将文件移动到不同的相关文件夹。当前的选项需要在大量文件夹中导航,以查找和定位特定文件夹,该文件夹与一堆类似的其他文件(类似于大海捞针)。Microsoft Office suite具有名为“文档位置”的内置功能,可以将其添加到快速访问工具栏中。但它只允许查看文件夹位置或完整路径,而不允许使用单键单击命令或键(AFAI

在使用不同的软件应用程序时,通常需要快速找到打开的活动文件的文件夹位置,并突出显示或选择活动文件。快速定位在同一文件夹中查找相关文件所需的驻留文件夹,重命名打开的文件或驻留文件夹,或将文件移动到不同的相关文件夹。当前的选项需要在大量文件夹中导航,以查找和定位特定文件夹,该文件夹与一堆类似的其他文件(类似于大海捞针)。Microsoft Office suite具有名为“文档位置”的内置功能,可以将其添加到快速访问工具栏中。但它只允许查看文件夹位置或完整路径,而不允许使用单键单击命令或键(AFAIK)方便地跳转到该定位文件夹并突出显示/标识打开的文件,以便对该特定文件/文件夹进行进一步操作(例如重命名、移动)。其他软件应用程序也是如此,其中本机程序可以选择获取完整路径,但无法跳转到特定的文件/文件夹。将其中一个Microsoft Office套件应用程序(例如word)作为测试用例,我可以想象以下过程:

  • 1获取当前打开的word文档的完整路径(D:\Folder\Subfolder\Mywordfile.docx)
  • 2关闭文件
  • 3资源管理器命令,选择并突出显示给定完整路径的文件夹中的文件(进程1)
  • 根据需要手动操作文件/文件夹,双击返回文件操作应用程序(如word)
在我对上述任务执行情况的评估中,有以下几种可能性

  • 任务1 Microsoft Word有一个名为“文档位置”的内置函数,用于获取打开文档的完整路径,以及当前可以复制剪贴板中的文件路径
  • 任务2关闭文件(Ctrl+W或Ctrl+F4)
  • 任务3用于资源管理器命令的AHK代码,用于为给定完整路径选择文件(在任务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%"

到目前为止,explorer命令只将我带到不在特定文件夹位置(任务1中的路径)的“文档”文件夹。我很想知道什么是正确的资源管理器代码来为剪贴板中给定的完整路径选择文件。感谢您支持AHK代码或更好的方法来完成此任务。提前感谢。

我不清楚为什么您的示例代码不起作用。我怀疑这是因为额外的角色

运行此命令后,Windows资源管理器将打开并选择所需的文件(如果存在)


我不清楚为什么您的示例代码不起作用。我怀疑这是因为额外的角色

运行此命令后,Windows资源管理器将打开并选择所需的文件(如果存在)


我不知道您是否尝试过其他方法,但我认为这更简单、更短:

  • 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

我不知道您是否尝试过其他方法,但我认为这更简单、更短:

  • 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
由于我的贡献,我能够想出以下解决方案。然而,我认为这项任务可能有更好的解决方案

 ;;; 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
由于我的贡献,我能够想出以下解决方案。然而,我认为这项任务可能有更好的解决方案

 ;;; 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

哇,这个问题写得很好。“我现在正在投票表决,但也将开始努力。”罗约米我看到莱茵从你的答案中删除了接受。我注意到了这一点,我对你的答案投了赞成票,因为你确实给了她/她AHK解决方案。我认为他们不应该撤回承诺。我让他们问了一个关于VBA的新问题来解决它。我很感激,谢谢。Rhinemine是一个新的Stack Overflow用户,并且还在这里学习诀窍。感谢@Ro Yo Mi和ib11,如果我以错误的方式投票,我表示歉意,因为我正在学习Stack曲线,因此不熟悉实践。就我个人而言,我相信尊重,给予应有的信任,并在可能的情况下为他人做出贡献。我选择这段代码作为查找文件夹/文件的方法,我以前遇到了如何执行它的障碍。这是一段很好的代码,可以为给定的路径定位文件,但它也有增强的空间,可以在不同的应用程序中展示它的健壮性。到目前为止,word似乎运行良好,但excel有时运行不佳。我会尝试更多,并张贴在这里。没问题,你们学得很快。哇,这是一个写得很好的问题。“我现在正在投票表决,但也将开始努力。”罗约米我看到莱茵从你的答案中删除了接受。我注意到了这一点,我对你的答案投了赞成票,因为你确实给了她/她AHK解决方案。我认为他们不应该撤回承诺。我让他们问了一个关于VBA的新问题来解决它。我很感激,谢谢。Rhinemine是一个新的Stack Overflow用户,并且还在这里学习诀窍。感谢@Ro Yo Mi和ib11,如果我以错误的方式投票,我表示歉意,因为我正在学习Stack an的曲线