Word MVPの新田さんがブログで面白い記事を書かれていました。
・【Wordマクロ】Word起動時に、前回終了時に開いていたファイルを表示
http://ameblo.jp/gidgeerock/entry-12125004705.html
Wordを起動したときに前回終了時に開いていたファイルを表示するマクロです。
なるほど。
シンプルながらなかなか便利そうです。
“これはネタをパクるしかない!”
というわけで、さっそくやってみました。
リボンXML
Word起動時 = スタートアップフォルダに入れたテンプレートファイルが開かれたときにマクロを実行するため、リボンをカスタマイズすることにします。
<?xml version="1.0" encoding="utf-8"?> <customUI onLoad="rbnRecentOpen_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui" />
標準モジュール
RecentFilesを使ってファイルを開くところは新田さんのコードをそのまま使います。
ただ、Wordを起動するたびにファイルが開かれるのは都合が悪い場合もあるため、
“Word起動時にShiftキーが押されていたらファイルを開く”
というように、キー判定処理を加えています。
Option Explicit Private Declare Function GetKeyboardState Lib "user32" (lpKeyState As Byte) As Long Public Sub rbnRecentOpen_onLoad(ribbon As IRibbonUI) Dim keys(0 To 255) As Byte If GetKeyboardState(keys(0)) <> 0 Then 'Shiftキー判定 If (keys(vbKeyShift) And &H80) <> 0 Then On Error Resume Next Application.RecentFiles(1).Open On Error GoTo 0 End If End If End Sub
スタートアップフォルダに保存
上記コードを設定したファイルをテンプレートファイル(dotm)として保存し、スタートアップフォルダにコピーすると、Word起動時に上記マクロが実行されるようになります。
私の方で作成したファイルを下記リンク先に置いておきますので、興味がある方は下記ファイルで動作をご確認ください。
► 起動時に前回終了時に開いていたファイルを表示するWordマクロ
おわりに
このマクロ、本当は下記コードのように
“Shiftキーと数字キーが押されていたら、数字キーに応じてファイルを開く”
処理を考えていたのですが、実際に試したところ、ファイルを開くと同時に押していた数字キーが文章に入力されてしまい、非常に使い勝手が悪いものになってしまいました。
(なので上記コードでは数字キー判定処理を抜いてあります。)
Option Explicit Private Declare Function GetKeyboardState Lib "user32" (lpKeyState As Byte) As Long Public Sub rbnRecentOpen_onLoad(ribbon As IRibbonUI) Dim keys(0 To 255) As Byte Dim num As Long: num = 1 '初期化 Dim i As Long GetKeyboardState keys(0) 'Shiftキー判定 If (keys(vbKeyShift) And &H80) <> 0 Then '数字キー判定(vbKey1 - vbKey9)テンキー未対応 For i = 49 To 57 If (keys(i) And &H80) <> 0 Then num = i - 48 Exit For End If Next On Error Resume Next Application.RecentFiles(num).Open On Error GoTo 0 End If End Sub
また、上で紹介しているコードではShiftキーによる判定を行っていますが、Word起動時にShiftキーを押していると、自動実行マクロが無効になりますので、AutoOpen等のマクロをお使いの方はご注意ください。
この記事へのコメントはありません。