Office関連

Re: 【Wordマクロ】Word起動時に、前回終了時に開いていたファイルを表示

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

関連記事

  1. Excel

    PhpSpreadsheetを使ってPHPからExcelファイルを出力してみる。

    一年半ほど前、「PHPWord」を使ってPHPからWordファイルを出…

  2. Excel

    ビジネスITアカデミーの無料VBAセミナーに行ってきました。

    Excel MVPの伊藤さんやWord MVPの新田さんのブログ記事で…

  3. Office関連

    Office 2013 カスタマープレビュー版の「Spy Utility」

    たまたま見つけたWebページ「Office2013のデバッグ用ツールが…

  4. アイコン一覧

    Office 2013 アイコン一覧(G)

    ・Office 2013 アイコン一覧 NUM…

  5. Office関連

    Office 365 APIをVBAから呼び出す(3)

    前々回の記事でOffice 365とAzure ADの紐づけを、前回の…

  6. Excel

    Adobe Reader XIを利用してPDFファイルのページ数を取得するVBAマクロ

    先日Adobe Readerを利用してPDFファイルのページ数を取得す…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP