サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
www.f3.dion.ne.jp/~element
概要 ある日付がその年の通算第何週かは、Format 関数を使って次のように求めることができます。 Format([日付],"ww") しかし、ある日付が当月の第何週かを求める書式は、Format 関数には用意されていません。 以下で、それを求める方法を紹介します。 ※ 式は VBA 中だけではなく、クエリー上や、フォームやレポートの中でも使用できます。 ※ ここで言う日付とは日付/時刻型の値を指します。人間が日付のように読めるというだけの文字列式や数値、その他 MS-Access (VBA) が日付式と認識できないいかなる独自フォーマットの値も、対象としません。 週数を取得する方法 これは、単純に 1 日から 7 日までを第一週とし、以降 7 日単位で週をカウントするものです。この場合は最高でも第五週までとなります。 式は以下の通りです。 (Day([日付])+6)\7 サンプル(200
VBA でたまに欲しくなる機能に、ヒアドキュメントがあります。 ヒアドキュメントというのは、簡単に言うと長文をソースコードにそのまま埋め込む機能です。通常、ソースコードに文字列リテラルを (引用符で括らずに) そのまま記述すると構文エラーになりますが、ヒアドキュメントを使うと構文解析しないでそのままリテラル扱いにしてくれます。そのため、SQL や HTML など、比較的長い文字列をコード内で取り扱う場合、ヒアドキュメントを使うとすっきり記述できるのが利点です。この機能が、VBA にはありません。 もっとも Access の場合はクエリがあるので、SQL をベタ書きする必要性はありませんし、SQL でなくともテーブルに格納すれば済む話ですから、あまり必要ないといえば必要ないのですが。 そうは言っても、コードと同じ場所にリテラルが書いてあったほうが見通しが良いとか、VBE 上で検索が効くので便
レポートを PDF 出力するフリーウェアまとめの中で取り上げた仮想プリンタ形式のフリーウェア、BullZip PDF Printer を使って Access レポートを PDF 変換する方法について、説明します。 なぜ BullZip PDF Printer か レポートを PDF 出力するフリーウェアまとめの内容とカブりますが、ここで簡単におさらいしておきましょう。 MS Access のレポートを PDF 出力するツールに求められる機能は、むろんケースバイケースだと思いますが、それだと話が進まないので最大公約数的に以下の四つを想定してみます。 フリーであること 広告がないこと Access 2003 以前でも使えること 保存ダイアログを抑止できること BullZip PDF Printer は、上記すべての条件を満たしているフリーウェアです。保存ダイアログは、COM または専用のコマン
概要 V-Tools アドインと言えば、あの* Skrol 29 氏が作成したアドインとして非常に有名です。 海外では抜群の知名度を誇るアドインですが、日本ではその機能の豊富さと便利さの割にはいまひとつ人気が定着せず、かねがね個人的に残念に思っていました。 おそらく日本語版の MS Access ユーザーにとって大きな障害となっていたのは、インターフェイスが日本語化されていないことではなかったかと推測します。 今回、縁あって YU-TANG が V-Tools の日本語ローカライズを担当させていただきましたので、正式日本語対応を記念して、どこよりも早く解説記事をお届けします。 MS Access 開発者/パワーユーザーの方々は、開発効率を飛躍的に高めてくれる V-Tools アドインの魅力をぜひこの機会に体験してみてください。 * Access 2000 から追加され、当時 解析不能とさ
概要 MS Access で検索、と言えば一昔前はデータベース内の検索と相場が決まっていたものですが、最近では多種多様なファイル形式が流通している背景を受けて、処理に関連する外部ファイルの検索まで求められる状況が増えつつあります。 Excel や Word といった MS Office ファミリー間の連携ならもともと得意だったわけですが、PDF のような MS 外製品となるとそうはいきません。ちょっとハードディスクの中を見回しただけで、テキストファイルから Zip のような圧縮ファイル、画像ファイル、電子メール、ヘルプファイル等々、さまざまな種類のファイルが見つかります。 これらの中から特定のテキストを含んだファイルを探し出すのは至難の業…というより、はっきり言って Access VBA だけでは無理でしょう。 その無理を可能にするのが、ExtractText.dll です。 Extrac
概要 前回までのあらすじ JRA のサイトから出馬表をスクレイピングする、という目標を掲げたものの、肝心の出馬表ページを GET しようとするとパラメータエラーになってしまうことが判明。 URL を確認したところ、別々のページに見えたものがまったく同一の URL になっていましたとさ。 「出馬表 開催選択」画面 「出馬表 レース選択」画面 「出走馬一覧」画面 さて、こういう場合はどうしましょう? 基本 ここで HTTP プロトコルについて、基本をおさらいしておきます。 HTTP プロトコルはいくつかのメソッドをサポートしています。 そのうち最もポピュラーなのは GET と POST でしょう。 GET はサーバにレスポンスを要求するメソッドです。静的な Web ページの取得で用いられるのはもちろんですが、CGI による動的なページをリクエストする場合は、一般的に URI に QuerySt
概要 今回は、いろいろな意味で例外的なトピックです。 まず本サイトではまだ扱っていない(なぜなら現時点で YU-TANG が所有していないので)Access 2007 に関するトピックであること。ページヘッダの適用バージョンに 2007 がまだ用意されていないので、ちょっと変なことになっていますが。 また、単なるバグ情報についてわざわざトピックを起こすのも初めてです。MS(に限らず)製品にバグはつきものなわけで、そんなことをいちいち取り上げていたらキリがありません。第一、MS のサポート技術情報を検索すれば誰でも分かることですから、ふつうであればその意義も疑わしいところです。 しかし、今回は問題の大きさと、相対的に日本国内での認知度の低さを考慮して、注意喚起のために特に単独でトピックを起こすことにしました。 Access 2007 には最適化すると DB が跡形もなく消失するバグが存在しま
概要 Access 2002 から、フォームに新しいイベント、MouseWheel イベントが追加されました。 以前からマウス ホイールのスクロールでレコードが移動する問題に悩まされていた一部ユーザーからは、当初これを福音として期待する声が多く聞かれていましたが、リリースされるやいなや非難の大合唱に変わりました。 フォームによる組み込みのスクロール処理(=レコードの移動)を抑止するための Cancel 引数が実装されなかったためです。 開発者はマウス ホイールが使用されたかどうかを知ることはできますが、その結果起きる事態に対しては依然として為す術もなく見守るしかできません。 こんなイベントに何の意味があるのでしょうか。 というわけで、MouseWheel イベントはあっという間に忘れ去られました。 個人的には、マウス ホイールのスクロールでレコードが移動するという仕様自体には何の問題もない
実際にはもっと細かい情報まで必要とする状況もあるでしょうが、今回はあくまでデモケースなので、このていどにしておきます。 どのみち、情報の取得は単調な繰り返しで、対象要素が変わってもやり方はそれほど変わりません。 本トピックを読み終えるころには、どんな要素でも自在に取り出せるようになっていることでしょう。 正規表現 正規表現とは、一定の規則に従ったパターン文字列を認識するための技術です。 パターンの定義にはメタ文字と呼ばれる特殊な意味を持つ文字を使用します。 概念的には VBA の Like 演算子を思い浮かべると理解しやすいでしょう。 Like 演算子にもいくつかメタ文字が存在します。たとえばメタ文字 "*" は、0 個以上の任意の文字を意味します。 正規表現のメタ文字は、Like 演算子のそれとは少し意味が異なりますが、大雑把に言えば Like 演算子を強力に拡張したものが正規表現(ある
概要 Web から情報を取得したいというニーズは、いまや当たり前のものになりました。 対象サイトが Web API を提供している場合、話は簡単です。しかし Web API を提供しているサイトばかりではありません。というより、数で言うなら Web API を提供していないサイトの方が圧倒的多数です。そんなサイトの中にほしい情報があった場合は、否応なく Web ページを直接取得して情報を解析・抽出する必要があります。 原始的と言うか地道と言うか、とにかくこのベタなやり方を称して「Web スクレイピング」(文脈によっては単に「スクレイピング」)と呼びます(海外では Web harvesting と呼ぶ場合も多いですが、なぜか日本ではこっちはほとんど用いられないようです)。 Access VBA で Web スクレイピングを行う方法については、本サイトにすでに関連トピックが二つ存在します。 W
概要 MS Access には、画像処理用のライブラリがありません。 もちろん表示だけならイメージ コントロールや連結/非連結オブジェクト フレームを使えば済む話です。 そもそもクライアント向けパーソナル DB 製品に高度なグラフィック処理機能を求めるのはお門違い、という意見も昔から根強いわけで、これが正論である点には何の異議もありません。 しかし一方で、DB 連携クライアントツールとして最も広く普及した MS Access にとって、データを取ってきて表形式で表示できればそれでよしとされた無邪気な時代がとうに終わりを告げているのもまた事実です。エンドユーザーから見れば、使うツールの種類などどうでもいい話で、それが業務に必要であれば IE も Acrobat Reader も MS Access も横一線の同じ道具でしかありません。そのとき、MS Access が組み込み機能として備える貧
概要 MS-Access のテーブルに作成できるフィールドには、様々なデータ型が用意されています。 その中の一つに、バイナリ型フィールドが有ります。 これはあまり一般的に知られていません。なぜなら UI(ユーザー インターフェイス)上からの手動操作では作成することが出来ず、DDL-SQL というデータ定義用 SQL 文を実行することによってしか作成できないからです。 バイナリ型フィールドにはどんな型のデータでも格納できるという特徴が有りますが、中でも文字列を格納すると、テキスト型フィールドでは不可能な大文字・小文字、半角・全角、ひらがな・カタカナを区別することが可能になります。 今回は、まずバイナリ型フィールドの作成手順を説明し、次にケース別にバイナリ型フィールドの使用例を幾つか取り上げていくことで、知られざるバイナリ型フィールドの特性に迫ってみたいと思います。 バイナリ型フィールドを作成
概要 Access 2000 以降では、使用中の MDB を最適化したければ、[ツール]-[データベース ユーティリティ]-[最適化/修復] を選ぶことで実行できます。 また長いあいだ待ち望まれてきた、終了時に自動的に最適化する機能も実装され、[ツール]-[オプション]-[全般] タブからチェック一つで設定できるようになりました。 しかし、カスタムのボタンクリック時や、あるいはワークテーブルの使用を伴うフォームのクローズ時などの任意のタイミングで、コード上から実行中の MDB を最適化する手段については、いまだにアプリケーション側からは提供されていないため、ユーザー側でさまざまな工夫が凝らされています。 ここでは、そんな数ある工夫の一つとして、私なりの手法を提示してみます。 ※ 使用中の MDB を最適化する手法の主だったバリエーションについては、下記サイトに列挙されています。大変参考にな
まず準備として、年齢用テキストボックスを 2 個コピーして、3 つにします。 テキストボックスには、上から順に [txt年齢]、[txt年齢1]、[txt年齢2] という名前を付けておきましょう。 [txt年齢] は入力用に、[txt年齢1] と [txt年齢2] は参照用になります。 次に [txt年齢1] の既定の前景色に、40 代の色である赤を指定します。 次に条件付き書式を使って、50 代から 70 代までの色を割り当てていきます。 [書式]-[条件付き書式] から、以下のように設定します。 続いて [txt年齢2] の [コントロールソース] プロパティを、以下のように変更します。 =IIf([年齢]<40,[年齢],Null) [txt年齢2] の既定の前景色には 10 代の色である水色を指定して、20 代と 30 代については条件付き書式で以下のように設定します。 [txt年
概要 テーブルのオートナンバー型フィールドは、ユニークな連番を発行するのに非常に便利な機能です。 しかしレコードの削除や入力途中にキャンセルされた場合などに発生する欠番に関しては、再使用が行なわれないため、これが問題になる場合があります。 本トピックは、オートナンバー型フィールドの欠番処理問題に関する疑問に終止符を打つべく企画されました。 第�T部「基礎編」では、まず既存の MSKB を列挙し、オートナンバー型フィールドの特徴を整理することで、何となく分かっているようで、実は余り知られていないオートナンバー型フィールドの挙動を明らかにします。 第�U部「FAQ 編」では、オートナンバー型フィールドをリセットしたいという FAQ を取り上げ、ケース別のソリューションを提示します。 第�V部「応用編」では、VBA を使用した高度な処理を取り上げ、欠番の列挙および任意フィールドを指定してオートナ
概要 MS-Access (VBA) には日付や時刻を計算するために日付/時刻型というデータ型が用意されており、このデータ型を操作するための関数群も存在します。 しかし、この日付/時刻型はあくまで直線の時間軸上の特定の日付をピンポイントで表すシリアル値であり、たとえば勤怠計算やカラオケボックスの稼働集計のように時間を量的に扱いたい場合には、そのままでは使えないケースも出てきます。 そこで、勤怠計算に便利な関数群を独自に用意してみました。 TimeDiff 関数ある日付間の時間差を量的に表す文字列を返します。EX) TimeDiff(#2001/03/29 22:00:00#, #2001/03/28 11:30:00#) 実行結果 → 34:30:00 TimeDiffEx 関数TimeDiff 関数の拡張版です。表示書式を指定できます。EX) TimeDiffEx(#2001/03/29
概要 MS-Access のデータを Excel と互換性の有るテキスト ファイル形式で出力すると言えば、やはり CSV 形式の名前が真っ先に上がるでしょうか。 最近では HTML/XML 形式も普及していますが、やはり Excel インストール環境ではダブルクリック一つで開く手軽さとデータの軽さで、CSV 形式は依然として定番の地位を保ち続けています。 そんな CSV 形式ファイルにも、弱点はあります。 CSV 形式ファイルが軽いのは書式情報を持たないからですが、それゆえにデータ型の判定は Excel の自動認識に任せるしかありません。そのため、文字列の "001" や "1-2-3" のようなデータを CSV 形式で出力した場合、Excel で開くと数値の 1 や日付の 2001/2/3 になってしまう、という現象が発生します。 これは Excel の仕様で、書式不明のデータは、[標準
Shell 関数 機能 外部テキストファイルを開くだけで何も操作をしなくてよい場合は、もっとも簡単なのがこの Shell 関数です。 Call Shell("NOTEPAD C:\Temp.txt", 1) Shell 関数自体は別にテキストファイルを操作するための関数ではなく、単にアプリケーションを呼び出すだけで、呼び出し先はメモ帳でも秀〇でも Excel でも何でもかまいません。上記例ではコマンドライン オプションでテキストファイルのフルパスを渡すことによって、メモ帳に起動と同時にテキストファイルを開かせています。 なおテキストファイルのフルパス中に半角スペース文字が混じる場合は、下記のようにパスをさらに二重のダブル クォーテーションで括る必要があります。 Call Shell("NOTEPAD ""C:\Documents and Settings\YU-TANG\デスクトップ\Te
概要 MS-Access 上で郵便番号を住所変換するためには、住所入力支援機能が提供されている。 しかし、元になっている辞書ファイルのアップデートが遅れたり、用途に応じてカスタマイズするには限界があるなどの理由から、日本郵政公社が配布している郵便番号データを利用して、オリジナルの郵便番号⇒住所変換機能を実装する方法も、広く知られている。 日本郵政公社(執筆当時。現・郵便事業株式会社)が配布している郵便番号データは単純な CSV 形式のため、加工がしやすく、初・中級クラスの VBA の知識があれば簡単に応用が効く、というのが、私が見聞きした範囲での一般的な認知のようだ。 しかし最近になって、ふとしたことから実際にその CSV データを見る機会が有り、いくつかの疑問点・問題点が浮かび上がってきた。 はたして日本郵政公社の CSV データは、本当に使いやすいのだろうか? 仕様 まず、仕様を確認し
概要 Access VBA と DOS コマンド。 昨今ではあまり馴染みのない組み合わせです。 主要 DOS コマンドは VBA に移植されていますし、VBA に移植されていないものは API や COM の Shell オブジェクト経由で呼べるので、「なんで今さら DOS コマンド?」という感覚が一般的かもしれません。 しかし、中には DOS コマンドの方が簡単に実行できるケースも有ります。 たとえば ping を打ってネットワーク上の任意のホストが生きているか確認したい場合や、あるフォルダの配下から、サブフォルダの中も含めて、特定の拡張子を持つファイルの一覧を取得したい場合などが該当します。 これらはいずれも VBA で実装可能ではありますが、複雑な再帰処理や API との連携が必要です。 一方 CUI であるコマンド インタープリタ上からであれば、たった 1 行の DOS コマンドを
概要 本サイトには、すでにWeb ページをダウンロードする方法〜 MSXML 編〜という類似トピックが存在します。 そちらでは、WebBrowser コントロールを使用せずに、Web ページをテキストファイルとして取得し、正規表現を使用してソースを独自解析することで情報を取得する方法について解説しています。 これはこれで、有効です。特に目的のデータの位置をキーワードなどで容易に特定できる場合は、最も効率的でしょう。 しかし一方で、対象データが遍在しているような場合では、複雑なソースの解析に HTML DOM (HTML Document Object Model) が威力を発揮する場合も有ります。 だったら最初から WebBrowser コントロールを使用すればよい話なのですが、ここにジレンマが存在します。 DOM は使いたい。 でも表示したいわけではないから、WebBrowser コント
YU-TANG's MS-Access Discovery ◆JavaScript がオフのため、一部機能や表示に問題が発生する場合があります。◆ このセクションでは、Microsoft 社が販売しているリレーショナル データベース製品 Microsoft Access および Microsoft Office Access (以下、総称して MS-Access) についてのテクニックや Tips を提供していきます。 お知らせ まささんのご厚意により、サイト内検索が可能になりました(各ページ最上部に設置)。 本 URL は、旧コンテンツのミラーサイト…のはずでしたが、移転先サービス終了のため元に戻りました。
概要 MS-Access で最も多いニーズのひとつとして、フォームに検索用のコントロールを配置して、条件に一致したレコードのみ表示したい、というものが挙げられます。 レコードソースにパラメータクエリーを使用するなど、方法は幾つかありますが、ここでは VBA で条件式を動的に生成し、フォームの Filter プロパティを利用して絞り込む方法について解説します。 ※ 本稿は検索/抽出手法全般について解説するものではなく、フィルタリングによる抽出という特定手法におけるコードサンプルを提示するものです。あるケースにおいてどの手法が適切かというガイドラインは提示しません。また Filter プロパティ自体についても特に解説しません。詳細はヘルプで確認してください。 コードの内容を理解するには VBA の基礎知識が必要です。 詳細 フィルターによる抽出コードは、主として Filter プロパティに設定
概要 MS-Access には、VB ほどではないにせよ、けっこう便利な ActiveX コントロールが標準で付属してきます。 よく用いられる ActiveX コントロールの筆頭に上げられるのは、やはりバーコードとカレンダーでしょうか。 しかしそれ以外にも、便利そうなのになぜか実際に使われているのをあまり目にしないコントロールがあって、ツリービュー(TreeView)はその代表格と言えます。 え、ツリービューって何? そういう方は、Windows エクスプローラのフォルダ ペインを思い浮かべてみてください。 ツリービューは階層構造を表現するのに適しており、位置関係を直感的に把握しやすいというメリットがあります。Windows エクスプローラで見慣れているというアドバンテージもあり、初心者であっても操作方法で戸惑うことはほとんどないでしょう。 しかし、使う方は簡単でも、作る方となると話は別で
式に未定義関数 '関数名' があります。 これには主に、以下の 3 つの原因が考えられます。 組み込み関数を使用している場合は 1 を、ユーザー定義関数の場合は 2 と 3 を参照してください。 Access 2000 で新関数を使用している Access 2000 で追加された新関数(Replace 関数や WeekdayName 関数など)の一部は、VBA 上でのみ使用できます。 これらの新関数は、式ビルダの組み込み関数一覧の中にも表示されず、クエリー中で使用すると前述のエラーが発生します。 これは Access 2000 の障害で、Access 2002 で修正されました。したがって Access 2000 でしか発生しません。 225956 - [ACC2000] 新しい VBA 関数を式で使用できない 回避策は以下の 3 つです。 Access 2002 以上にアップグレードする
次のページ
このページを最初にブックマークしてみませんか?
『www.f3.dion.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く