Access -Module-

モジュールは、VBAを用いてプログラミングを行う事が出来ます。
これにより、他のオブジェクト操作を簡素化したり、より高度な機能を使用する事が可能です。
しかし、コード入力になるため操作が難しく、将来的に自分以外が内容変更する場合は注意が必要です。

マクロで実行は「プロシージャの実行」より設定。

メニュー

メッセージウインドを非表示

テーブル作成クエリなどを実行する際に表示されるメッセージウインドウを非表示に出来ます。
開始()をマクロの一番最初、終了()をマクロの一番後ろに配置)

Function 開始()
'メッセージウインドウを非表示設定にする
DoCmd.SetWarnings False
End Function

Function 終了()
'メッセージウインドウの非表示設定を解除する
DoCmd.SetWarnings True
End Function

タイマー

あまり無いですが、マクロ実行中に一時停止させたい場合などに有効です。

Function タイマー()
Dim start As Variant
start = Timer

'2秒間のループ
While (Timer - start) < 2

DoEvents
Wend
End Function

「2」の部分を変更する事で停止時間を変えられます。用途に合わせて変更下さい。

各オブジェクトを開く・閉じる

各オブジェクトを開きます。

Function オブジェクトを開く()
DoCmd.OpenTable "テーブル名"
DoCmd.OpenQuery "クエリ名"
DoCmd.OpenForm "フォーム名"
DoCmd.OpenReport "レポート名"
'(印刷プレビューの場合、DoCmd.OpenReport "レポート名" , acViewPreview)
DoCmd.RunMacro "マクロ名"
End Function

各オブジェクトを閉じます。

Function オブジェクトを閉じる()
DoCmd.Close acTable, "テーブル名"
DoCmd.Close acQuery, "クエリ名"
DoCmd.Close acForm, "フォーム名"
DoCmd.Close acReport, "レポート名"
DoCmd.Close acMacro, "マクロ名"
End Function

ちなみに、アプリケーションの終了はDoCmd.Quitです。

SQLを実行

SQLを実行します。更新・削除クエリを一括で実行したい場合に有効です。

Function SQLを実行()
On Error Resume Next
DoCmd.RunSQL "ALTER TABLE 取引先 DROP COLUMN 備考"
On Error Resume Next
DoCmd.RunSQL "ALTER TABLE 取引先 DROP COLUMN 備考"
End Function

"SQL文"の部分は必要に応じて変更。

テーブルのコピーを作成

テーブルのコピーを作成します。

Function テーブルのコピーを作成()
Application.DoCmd.CopyObject , "テーブル名(コピー先)", acTable, "テーブル名(コピー元)"
End Function

外部ファイルのコピーを作成

外部ファイルのコピーを作成します。

Function 外部ファイルのコピーを作成()
On Error Resume Next
FileCopy "コピー元のフルパス", "コピー先のフルパス"
End Function

外部ファイルの削除

外部ファイルを削除をします。(インポート後のファイル削除などに使用)

Function 外部ファイルの削除()
On Error Resume Next
Kill "対象のフルパス"
End Function

テーブルの表示サイズを決めて開く

テーブルの表示サイズを決めて開きます。
フォームを作らずにテーブルを表示させたい場合に有効。

Function テーブルを開く()
DoCmd.OpenTable "テーブル名"
'Width(幅)・Height(高さ)を設定
DoCmd.MoveSize Width:=3500, Height:=5000
End Function

既存テーブルのフィールド名を変更

既存テーブルのフィールド名を変更します。

Function 既存テーブルのフィールド名を変更()
Dim db As Database
Set db = CurrentDb

'変更するテーブル名を指定
With db.TableDefs("テーブル名")
'左側にフィールド名(現)、右側にフィールド名(新)を設定
On Error Resume Next
.Fields("フィールド名(現)").Name = "フィールド名(新)"
On Error Resume Next
.Fields("フィールド名(現)").Name = "フィールド名(新)"

.Fields.Refresh
End With
End Function

既存テーブルの削除

既存テーブルを削除します。

Function 既存テーブルの削除()
DoCmd.DeleteObject acTable, "テーブル名"
End Function

基本的に既存テーブルを上書きすれば良いので、あまり必要ない。
むしろ、消すことで動かなくなる危険性が高くなる気がする。終了時に実行して容量削減には使えそう。
acTableacQueryacFormなどに変更すると他のオブジェクトも削除可能。

既存テーブル名の変更

既存テーブル名を変更します。

Function 既存テーブル名の変更()
DoCmd.SetWarnings False
DoCmd.Rename "テーブル名(新)", acTable, "テーブル名(現)"
DoCmd.SetWarnings True
End Function

Excelにエクスポートする場合、名前がsheet名になってしまうため活用。
acTableacQueryacFormなどに変更すると他のオブジェクトも変更可能。