MS Access Tips/Sample and VBA and Blog customize etc...

VBA( 30 件)

区切りなしの電話番号に適切な位置に区切り文字を挿入する関数

ユーザーが電話番号を入力する時、市外局番-市内局番-番号 と分けて入力してくれればいいですが、数字だけを入力する場合もあります。そんなとき、自動で適切に位置にハイフンを挿入してくれるといいですよね。しかし、市外局番は2桁のものから5桁のものまであるので、簡単にはできません。 難易度:...

パラメータクエリを含むSQLをVBAから実行する

パラメータクエリをVBAでレコードセットとして開く方法は検索すれば見つかりますが、それを含むSQLを実行するとなるとそのものズバリのものはなかなか見つかりません。 難易度:...

オブジェクトの説明プロパティの取得・設定関数

説明プロパティとはナビゲーションウィンドウのオブジェクトアイコンを右クリック-[***のプロパティ]ででる説明のことです。 これをVBAから簡単に取得したり、設定したりする関数です。 難易度:...

累計値をテーブルに自動入力する関数

累計値を必要とする場合は結構ありますね。例えば出納帳の残高とか。 本来はクエリで、DSum関数やサブクエリで演算で求めるべきものです。しかし、この方法は処理が重くなりがちですし、式やSQLが複雑になりがちです。 そこでクエリを使わずに累計値をテーブルに簡単に入力する関数を紹介します。 難易度:...

グループ毎連番を自動入力する関数

クエリで連番を表示する場合、DCount関数やサブクエリを利用する方法はあちこちで紹介されています。 しかし、この方法は自分より前のレコード件数をカウントするというロジックなのでレコード件数が多くなると幾何級数的に重くなります。また、グループ毎に連番を振るという仕様になると、条件式も複雑になってきます。 クエリは使わずにテーブルに連番フィールドを持たせて、そこに VBA で連番を書きこむようにすると高速...

複数値フィールドを含むテーブルをエクスポートしたものをインポート

掲示板に下記の質問がありました。 hatena の Microsoft Access 掲示板|エクセルデータのインポート > スレッドNo.2194 要約すると、 社外の方にデータの更新、修正をしてもらうことになり、Accessを持っていないので Excel にエクスポートしてそれを渡して作業してもらい、その後Accessにインポートすることにしました。ところが複数値フィールドがあるとうまくインポートできない。」 これを解決する方法を紹介し...

カウントダウンダイアログ関数

時間のかかる処理や定期的な処理を実行するとき、「10秒後に実行します」とメッセージを出してカウントダウンをしていき、0秒になったら実行するということを実現する関数です。 フォームをダイアログモードで開きタイマーイベントを使用すれば比較的簡単に作成できますが、MsgBox関数と同じように汎用的に使える関数にしてみました。 難易度:...

レポートをグループ毎に分割してPDFファイルとして保存したい

最近、よく見かける質問です。 レポートのPDF化は、Access2007から、OutputToメソッドの出力形式の引数でPDFを指定できるようになったので実に簡単です。 ただ、出力するときに抽出条件を設定できないので、全レコードが一つのファイルとして出力されます。 これを、顧客などのグループごとに分割してPDF化する方法です。2007以降が対象です。 難易度:...

連番フィールドの最小空き番号を取得する関数

主キー等の自動採番で DMaxで次番号を取得するというのはよくありますが、削除などして空き番号がある場合それを再利用したいという要望もけっこうあるようです。 hatena の Microsoft Access 掲示板|ナンバー自動入力について で、私の主催する掲示板で同様の質問がありましたので、回答用に作成しました。 回答後、ちょっと検討しなおして高速化もしてみました。 難易度:...

Accessデータベースファイルを最適化する関数

Accessのデータベースファイルは修正やデータの追加・削除を繰り返すとファイルサイズが肥大化します。またこれを放置すると破損の危険性も高まります。このため、定期的に最適化/修復を実行する必要があります。 エンドユーザーにこの作業を強制するのもなかなか難しいものです。オプションで「閉じるときに最適化する」というのがありますので、それにチェックを入れておけば閉じるときに自動で最適化が実行されます。 ただ...

外部ファイルのテーブルを別の外部ファイルに転送

A.mdbというファイルのモジュールにTensou()という関数があります。そのファイルを開いている状態で、B.mdbにあるTblというテーブルをC.mdbに転送するVBAコードはつくれないでしょうか。 B.mdbとC.mdbは開かないで、A.mdbもモジュールだけでやるという条件です。 こんな質問がありました。「B.mdbとC.mdbは開かないで」というのがどの辺までのことなのかよくわからないのですが。 外部データペースファイルのデータ操作をし...

オプショングループ上の選択されたコントロール名あるいはその標題を返す関数

フォーム上にオプショングループのフレーム(フレーム1)があり、その中にオプションボタンが2つ、オプション1(オプション値: 1)、オプション2(オプション値: 2)があります。 選択されいてるコントロール名を取得したいのですがどうしたらいいでしょうか。 moug掲示板でこのような質問がありました。汎用的な関数を作成して回答しましたが、mougは一定期間が過ぎると消えてしまいますので、こちらに格納しておきます。 ...
このカテゴリーに該当する記事はありません。