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等のマクロをお使いの方はご注意ください。


















この記事へのコメントはありません。