[AHK] ワードのスタートアップフォルダーを開く

以前、バッチファイルによるワードのスタートアップフォルダーを開く方法を記事にいたしましたが、今回は AutoHotKey で実現するスクリプトを紹介します。実務的にはバッチファイルがあれば十分事足りるのですが、ちょっと遊びのつもりでAHKへ持ち込んでみました。

ワードのアドインマクロ(例えば WildLightなど)を登録する際にお使いいただけます。


#NoEnv
EnvGet, WordStartUpPath, APPDATA
IfNotExist, %WordStartUpPath%
{
msgbox, 環境変数 APPDATA が無いか、フォルダーが存在しません。
ExitApp, 1
}
WordStartUpPath = %WordStartUpPath%\Microsoft\Word\StartUp
IfNotExist, %WordStartUpPath%
{
msgbox, ワードのスタートアップフォルダーがありません
ExitApp, 2
}
Run %WordStartUpPath%
return


このスクリプトは「OpenWordStartUpFolder.ahk」として公開していますので、ダウンロードしてお使いください。


[AHK] フォルダーを探して開くスクリプト

翻訳者の皆さんは、翻訳依頼された案件管理をどのようにされているでしょうか?

自分でMicrosoft Accessなどを使って総合環境を作っている強者も聞きますが、概ねエクセルで管理したり、人によっては手書き台帳を使っている人もいるかもしれません。

どちらにせよ、案件を入り口から出口まで管理する上で、ユニークな番号なり情報を使って管理するのが、間違いを起こさないためにも大切でしょう。このユニークな番号/情報は、自分でシーケンシャルな番号を付与しても良いでしょうし、エージェントやクライアントが使用する番号を代わりに使っても良いでしょう。

翻訳案件を取り扱うとき、それに関わる多くのファイルを管理しなくてはなりませんが、案件ごとにユニークなフォルダーを作成して管理するのが一般的なのではないかと思います。

イメージ) 案件管理フォルダー → 各案件フォルダー

私はこういうやり方をしているのです。案件フォルダーには、その案件のユニークな情報を付けています。例えば、自分でつけた案件管理番号とか、顧客が付けている管理番号や顧客の会社名と名前といった感じです。とにかく、案件を特定できるユニークな情報をフォルダー名につけます。この管理方法で仕事をしていると、例えばメールに書かれている管理番号から、案件フォルダーを即開けたら良いなぁという場面が多くなるのですが、それを実現する AutoHotKey スクリプトを作ってみました。

具体的には以下のような使い方ができるようになります。

  1. フォルダーを特定できる情報(案件番号や名前)を範囲指定する。
    例えば、メール本文にある案件番号を範囲指定する。
  2. Ctrl + Shift + F を押す。
  3. 範囲指定した文字列を含むフォルダー名を持ったフォルダーが見つかれば、エクスプローラで自動的に開く。

案件フォルダーを探すために、エクスプローラをマウスでグリグリスクロールして探すより遥かにスピードアップになります。また、過去案件を探すのにも便利だと思います。お役に立つようでしたら、お使いください。

ダウンロードはこちらから: FolderFinder.ahk

使用前に、スクリプト中の「初期設定」部で、検索対象とする親フォルダーを指定してください。現状は SearchRoot1 にマイドキュメント、SearchRoot2にCドライブルートが指定されています。検索対象フォルダーはいくらでも設定できますので、SearchRoot[N] の[N] 部分の数字を増やして、例えば、SearchRoot1は案件管理フォルダー、SearchRoot2は過去件フォルダー、SearchRoot3はマイドキュメントというように登録してください。なお、SearchRoot[N] の[N]の若い順に検索していきます。

なお、このスクリプトでは、指定したフォルダー下、一階層しか検索しません。もし、サブフォルダーまで検索したい時は、スクリプト中のコメントを参照に修正してください。
(「loop, Files, %SearchRoot%*%SearchWord%* ,DR」とする)

ただし、階層が深いととんでもなく遅くなります。


; ─────────────────────────────────────────────
; FolderFinder.ahk                        Ver. 0.02
;                                         by Terry Saito
;
; このスクリプトは、範囲指定した文字列を検索キーとして、
; 検索文字列を含むフォルダー名のフォルダーを探し、
; 最初に見つかったフォルダーをエクスプローラで開きます。
; ─────────────────────────────────────────────
; 翻訳横丁の裏路地    http://terrysaito.com
; WildLight Blog    https://wordwildlight.wordpress.com/
; ─────────────────────────────────────────────

#NoEnv
SendMode Input
EnvGet, HOMEPATH, HOMEPATH<span style="color: #00ff00;"> ; HOMEPATH へ環境変数HOMEPATHの内容をコピー
; 例)マイドキュメントを指定する場合、%HOMEPATH%\Documents とすれば良い

^+f::
; ↑ホットキーは Ctrl + Shift + F
; ! = ALT / + = SHIFT / ^ = CONTROL / # = WIN を使って
; 任意のキーへ割り当ててください。
; =====初期設定=====
; 検索するフォルダー名をフルパスで指定してください。
; (SearchRootN)のNを増やせば、検索対象フォルダーを増やせます。
   SearchRoot1 = %HOMEPATH%\Documents
   SearchRoot2 = C:\
; ==============
CurrentSpeed = %A_BatchLines%

SearchWord := Trim(GetRange())

If SearchWord =
  {
    msgbox, フォルダー名検索する文字列を範囲指定してから操作してください。
    goto break_FolderSearch
   }

SetBatchLines -1
i = 1
while (Strlen(SearchRoot%i%))
   {
    SearchRoot := SearchRoot%i%
        ; サブフォルダーまで検索する場合は、以下のように変更する。
        ; ただし、階層が深いと処理速度が激しく遅くなります。
        ; loop, Files, %SearchRoot%\*%SearchWord%* ,DR
    loop, Files, %SearchRoot%\*%SearchWord%*, D
     {
      Run, %A_LoopFileFullPath%
      goto break_FolderSearch
     }
    i := i + 1
   }
msgbox, 「%SearchWord%」を名前に持つフォルダーは見つかりませんでした。

break_FolderSearch:
SetBatchLines %CurrentSpeed%

return

; ─────────────────────────────────────────
; ファンクション群
; ─────────────────────────────────────────
; 【Function】範囲指定されている文字列を返す
GetRange()
{
     Backup := ClipboardAll
     clipboard =
     Send ^c
     ClipWait, 0 ; 上手く行かなければここの数値で調整
     keyword = %clipboard%
     Clipboard := Backup
     Backup =
     Return %keyword%
}