#699 | テーブルのデータシートのフォントを一括変更するには? | テーブル、VBA | |
カレントデータベースにあるすべてのテーブルを探索し、それを「データシートビュー」で表示したときのフォントの種類とサイズを一括変更するプログラム例です。 ここでは、処理の外枠としてカレントデータベース内のすべてのテーブルの定義を列挙します(For Each tdf In dbs.TableDefs)。システムテーブル(AttributesがdbSystemObject)と隠しテーブル(AttributesがdbHiddenObject)は除外した上で、それぞれのテーブルの定義(TableDef)として下記の2つのプロパティを設定しています。
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 データシートの書式を動的に設定するには?」 |
|||
|
Copyright © T'sWare All rights reserved |