Memorandum

Word VBA を用いたファイル操作選択フォルダ内のワードファイルの表示倍率を一括変更

仕事上で複数のワードファイルの表示倍率を揃えることとなり、作成したWord VBAコードと簡易ソフトです。
ExcelでWordファイルを操作することも出来ますが、参照設定を行う必要があります。そもそもWordファイルを操作するのなら、Word VBAで作成した方が汎用性が高いと考え、Word VBAに触れてみました。

簡易ソフト

選択フォルダのワードファイルの表示倍率を一括変更するフリーソフトです。自分用のため簡易な作りですが、よければお使いください。 ダウンロード 43KB

ポイント

・Wordでのコード記述
・FileDiarogプロパティ
・フォルダの存在確認
・複数のファイルの操作
・倍率変更の方法

FileDialogプロパティの引数に「msoFileDialogFolderPicker」を設定しコードを実行すると、「参照」のダイアログが表示される。ダイアログではフォルダを選択でき、選択したフォルダは、SelectedItemsプロパティで、そのパスを取得できる。
何らかの理由で、フォルダの存在を確認するケースも考えられるので、Dir関数を用いたフォルダの存在確認方法を、補足として併記する。


サンプルコード

選択したフォルダ内の、全てのWordファイルを一括で任意の表示倍率に変更するサンプルコード

Sub All_Documents_ZoomChange() 'メイン
    Dim strDirPath As String
    Dim strExistDir As String
    strDirPath = Search_Directory()
    If Len(strDirPath) = 0 Then Exit Sub
    strExistDir = IsExistence_Directory(strDirPath)
    If Len(strExistDir) = 0 Then Exit Sub
    Call Search_Documents(strDirPath)
End Sub

Private Function Search_Directory() As String 'フォルダの選択 With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then Search_Directory = .SelectedItems(1) End With End Function
Private Function IsExistence_Directory(ByVal DirPath As String) As String 'フォルダ存在確認 IsExistence_Directory = Dir(DirPath, vbDirectory) End Function
Private Sub Search_Documents(ByVal strPath As String) '各ファイルの倍率変更 Dim strTarget As String Dim strDirPath As String Dim varZoom As Variant strPath = strPath & Application.PathSeparator strTarget = Dir(strPath & "*.doc?") If strTarget = "" Then Exit Sub Do varZoom = InputBox("倍率を指定して下さい(10~500)", , 100) If Len(varZoom) = 0 Then Exit Sub Loop Until IsNumeric(varZoom) varZoom = CLng(varZoom) If varZoom < 10 Or 500 < varZoom Then MsgBox "指定できる数値は10~500の間です", vbExclamation, "中止します" Exit Sub End If Do With Word.Documents.Open(strPath & strTarget) If ActiveWindow.View.Zoom <> varZoom Then ActiveWindow.View.Zoom = varZoom .Saved = False 'ここがポイント .Save End If .Close End With strTarget = Dir() Loop Until strTarget = "" strTarget = Dir("") End Sub

メモ

Wordでのコード記述場所

WordでVBAコードを記述する場合の操作は次の通り。
【1】Wordを起ち上げ、[Alt]+[F11]を押す。VBEが起ち上がる。
【2】左上部の「プロジェクト Project」の任意の場所で「右クリック」→「挿入」→「標準モジュール」

挿入された標準モジュールにコードを記入、又はサンプルコードを貼り付ける。

FileDiarogプロパティ

ファイルダイアログを表示する。引数により表示されるダイアログの種類が異なる。引数に設定できるのは、次のMsoFileDialogTypeクラスの定数のいずれか。

・msoFileDialogFilePicker 「参照」ダイアログでファイルを選択できます。
・msoFileDialogFolderPicker 「参照」ダイアログでフォルダを選択できます。
・msoFileDialogOpen 「ファイルを開く」ダイアログ
・msoFileDialogSaveAs 「名前をつけて保存」ダイアログ

ファイルダイアログは、ファイル(フォルダ)のパスを取得するものであり、「ファイルを開く」や「名前をつけて保存」のダイアログであっても、実際にファイルが開かれたり、保存されるものではない。

ダイアログで選択したファイル(フォルダ)パスの取得には、SelectedItemsプロパティを使用する。使用例は以下を参照。

Sub UseFileDialogOpen()
    Dim lngCount As Long
    ' ファイル ダイアログを開きます。
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True 'ファイルの複数選択を可能にする
        .Show
        ' 選択された各ファイルのパスを表示します。
        For lngCount = 1 To .SelectedItems.Count
            MsgBox .SelectedItems(lngCount)
        Next
    End With
End Sub

Dir関数

指定したパターンやファイル属性に一致する、ファイルやフォルダの名前の文字列を返す。返される文字列はString型。ドライブのボリュームラベルも取得可能。

構文:Dir[(pathname[, attributes])]

[pathname]
ファイル名を表す文字列式を指定。フォルダ名やドライブ名も含めて指定可能。
指定した内容が見つからないときは、長さ「0」の文字列を返す。

[attributes]
省略可能です。取得したいファイルの属性の値の合計、または定数を指定。
省略すると、標準ファイルの属性。Windowsでの「設定値」は以下の6つ

【定数 / 値 / 内容】
vbNormal / 0 / 標準ファイル
vbReadOnly / 1 / 読み取り専用ファイル
vbHidden / 2 / 隠しファイル
vbSystem / 4 / システム ファイル
vbVolume / 8 / ボリューム ラベル。この値を指定すると、すべての属性は無効。
vbDirectory / 16 / フォルダ

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.