#699 テーブルのデータシートのフォントを一括変更するには? テーブル、VBA

カレントデータベースにあるすべてのテーブルを探索し、それを「データシートビュー」で表示したときのフォントの種類とサイズを一括変更するプログラム例です。

ここでは、処理の外枠としてカレントデータベース内のすべてのテーブルの定義を列挙します(For Each tdf In dbs.TableDefs)。システムテーブル(AttributesがdbSystemObject)と隠しテーブル(AttributesがdbHiddenObject)は除外した上で、それぞれのテーブルの定義(TableDef)として下記の2つのプロパティを設定しています。
  • DatasheetFontName → データシートのフォントの種類 ⇒⇒ ここでは「游明朝」に設定

  • DatasheetFontHeight → データシートのフォントのサイズ ⇒⇒ ここでは「10pt」に設定


Dim dbs As Database
Dim tdf As TableDef
Dim prp As Property

Set dbs = CurrentDb

On Error Resume Next
For Each tdf In dbs.TableDefs
  With tdf
    If ((.Attributes And dbSystemObject) Or _
        (.Attributes And dbHiddenObject)) = 0 Then
      'フォントの種類の設定
      .Properties("DatasheetFontName") = "游明朝"
      If Err.Number = 3270 Then
        Set prp = .CreateProperty("DatasheetFontName", dbText, "游明朝")
        .Properties.Append prp
      End If
      Err.Clear
      
      'フォントのサイズの設定
      .Properties("DatasheetFontHeight") = 10
      If Err.Number = 3270 Then
        Set prp = .CreateProperty("DatasheetFontHeight", dbInteger, 10)
        .Properties.Append prp
      End If
      Err.Clear
      
    End If
  End With
Next tdf


マニュアル操作でテーブルを新規作成したあと、リボンの操作でデータシートのフォントを一度も変更していない場合、「DatasheetFontName」などのプロパティ自体が(未設定ということではなく)存在していない状態になっています。存在しないプロパティに値を代入しようとするとエラー(番号:3270)が発生します。
そこで上記では、まずプロパティがあるという前提で代入を行い、そこで3270エラーが発生したら「プロパティ自体をTableDefに追加するとともにその値を設定する」といった処理となっています。

※「On Error Resume Next」とすることで途中でエラーが発生してもコードは次の行へ進みます。もしエラーが発生していなければ「Err.Number」は「0」ですが、エラーが発生していればエラー内容に応じたそれ以外の値がセットされています。


実行例:





※参考Tips:フォームに関して同様の操作をしたい場合 「#628 データシートの書式を動的に設定するには?」
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved