ダンス競技会の進行状況をスクリーンに投影することと音楽演奏をすることの2つの目的でアクセスを構築しました。
名付けて「スクリーンと音楽」としました。多くの競技会場で稼働している様子を見るととてもうれしくなります。
講座では、「スクリーンと音楽」のアクセスシステムを余すところなく公開し、仕組み・考え方・進め方等をザックリと解説していきます。
1か月に2回程度の不定期開催とし、10月頃には終了する予定です。
なおナベシステムは、Windows11への移行に伴い
ディレクトリを変更
しました。OS、 ACCESS とも64bitバージョンです。
第1回では、この「スクリーンと音楽」をご自分のPCにセットアップし、動かすことを予定しています。
自分 access vba mciSendString Copilot mciSendString関数は、メディアコントロールインターフェイス (MCI) を介してマルチメディアデバイスを制御する強力なツールです。この関数を使用すると、MCIデバイスにコマンド文字列を送信して、音楽ファイルの再生、停止、一時停止、再開などの操作が可能になります。まるでコンピュータに「音楽を再生してね」と伝えているようなものですね! 🎵 以下にmciSendStringの使い方を説明します。 mciSendStringとは? mciSendStringは、Windows API(アプリケーションプログラミングインターフェース)の一部です。VBAの組み込み関数ではなく、Windows内で利用できる関数です。 Windows APIは、Windowsのさまざまな機能と機能へのアクセスを提供する関数の集合です。これらの関数をVBAから呼び出すことで、音楽再生やキーボード入力のキャプチャなど、さまざまな機能を利用できます。 mciSendStringの使い方 まず、mciSendString関数を使用することを宣言する必要があります。Windowsが32ビットか64ビットかによって宣言が異なります。 以下は両方の宣言の例です: ' 64ビットWindows用 Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _ (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long ' 32ビットWindows用 Private Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" _ (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long 適切な宣言をVBAモジュールの先頭に配置してください。 コマンド文字列と操作: mciSendStringを使用して、特定のコマンド文字列をMCIデバイスに送信して制御します。 例: ファイルを再生する:Call mciSendString("play " & file, "", 0, 0) 再生を停止する:Call mciSendString("stop " & file, "", 0, 0) 一時停止する:Call mciSendString("pause " & file, "", 0, 0) 一時停止から再開する:Call mciSendString("resume " & file, "", 0, 0)
「スクリーンと音楽」は当初は32bit で作成しその後64bit にバージョンアップしています。バージョンアップした「スクリーンと音楽」は64bitへの修正プログラムを含んでいます。
「frm_表示NOW」のコーディングは簡単ではありません。完成したコードを見るとよくぞここまで作ったなと自分でも思います。
コーディングを解析して理解するのに本人でさえ後で見直すと困難です。まして他人が理解するのはもっと困難です。コーディングして動かしてみるとようやく理解できます。
最初から一発でコーディングできたわけでなく、グーグルでググりながら、また「F1」キーから Visual Basic for Applications で調べながら
時間をかけて完成にこぎつけています。そして今ではCopilotに質問すると良い答えが返ってきます。
自分 自分 が送信しました: ランダムについて教えてください。 Copilot 回答を生成しています… Copilot が送信しました: もちろん、喜んでお手伝いします!ランダムについてお話しましょうね。🌟 「ランダム」は、確率論や統計学などでよく使われる言葉です。具体的には次のような意味があります1: 無作為にすること:何かを完全に偶然に任せること。手当たり次第にすること。例えば、ランダムに曲を再生すると、どの曲から始まるかわからないですよね。 標本をとる際の無意識性:特に確率論や統計学の文脈で使われます。標本を取る際に意志や感情を交えずに行うことを指します。つまり、規則性や目的を考慮せずにデータを選ぶことです。 例文をいくつか見てみましょうね: 「午前中は一定方向に流れていたのが、今はランダムになっている。」(出典:神野オキナ『あそびにいくヨ! 第05巻』) 「どちらが勝つか全くランダムなゲームも面白くありませんし、勝敗がほとんど決まっているゲームもつまらない。」(出典:茂木健一郎『「脳」整理法』) 類似の意味を持つ言葉としては、「無作為」「任意」「手当たり次第」「不規則」「無秩序」などがあります。 もしさらなる質問や詳細を知りたいことがあれば、どうぞお聞きくださいね!😊
つまり… の後に続く、「規則性や目的を考慮せずにデーターを選ぶこと」に要約されています。
言い換えるとランダム以外に目的があったらそれは完全なランダムではなく、条件(目的)付きのランダムと考えたほうがいいでしょう。
Learn VBA Rnd 関数 [アーティクル] 2023/04/07 8 人の共同作成者 この記事の内容 構文 戻り値 注釈 例 関連項目 擬似乱数を含む Single を 返します。 構文 Rnd [ (数値) ] 省略可能な Number引数 は、 単一 または任意の有効な 数値式です。 戻り値 数値が Rnd が返す値 0 より小さい シードとして Number を使用して、毎回同じ 数値 を指定 します。 0 より大きい 擬似ランダム シーケンス内の次の数値。 0 に等しい 最近生成された乱数。 省略 擬似ランダム シーケンス内の次の数値。 注釈 Rnd 関数は、0 以上 1 未満の値を返します。 Number の値は、Rnd が擬似乱数を生成する方法を決定します。 所定の初期シードの場合、同じ番号シーケンスが生成されます。これは、Rnd 関数を連続して呼び出すたびに、シーケンス内の次の値のシードとして、前の値が使用されるためです。 Rnd を呼び出す前に、引数を指定せずに Randomize ステートメントを使用して、システム タイマーに基づくシードを使用して乱数ジェネレーターを初期化します。 所定の範囲でランダムな整数を生成するには、次の式を使用します。 VB コピー Int((upperbound - lowerbound + 1) * Rnd + lowerbound) ここで、upperbound には範囲の上限の値を指定し、lowerbound には範囲の下限の値を指定します。 注意 乱数のシーケンスを繰り返す場合は、数値の引数を指定した Randomize を使用する直前に、負の引数を指定した Rnd を呼び出します。 Number に同じ値で Randomize を使用しても、前のシーケンスは繰り返されません。 例 この例では、Rnd 関数を使用して、1 から 6 までのランダムな整数を生成します。 VB コピー Dim MyValue As Integer MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.
テレビでたまに観る宝くじの抽選会はどうでしょう。もしコンピューターで処理し、しかも非公開だとしたらとてもつまらなく問題が起きるでしょう。
羽根を回し矢を射るという機械的で誰が見ても疑いの余地はありません。一の位から上の位へ当選の確率徐々に下がっていきます。上の位からでもいいはずですが
そうするとハズレがいっきに出てしまいます。目的を持った条件付きランダムなのです。
全国高校野球甲子園大会はどうでしょう。トーナメント方式がそもそも不公平と言わざるを得ません。優勝はまず間違いなく一番強いチームが決まりますが準優勝以下は
組み合わせによって大きく変わる可能性があります。そこで問題が起きないよう参加者自らくじを引き、その抽選会を公開するのです。プロ野球ドラフト会議も似ていますね。
さて、ダンス競技会のヒート割はどうでしょう。単独審査、スケーティングによる複数審査の違いはあっても高校野球のトーナメント方式とぼほ一緒です。
しかし、背番号は選べずヒート割の抽選会もなく主催者が決めています。もしランダムに決めるとしたら平等のような気もしますが、大きな違いがあります。
それは、決めること自体を参加者がするか主催者がするかということです。参加者がくじを引けば本人だから"良し(仕方ない)"、主催者が決めれば"勝手だ(気に入らない)"ということになりえます。
ランダムで平等にするということはあり得ないのです。常に不平等となります。同じヒートにファイナリスト、同じ県(教室)、同じランクの重複を避けることは
コンピューターの操作(プログラム)でそう難しいことではありません。平均化することは可能ですが完璧すぎるといつも同じ順番で並んでしまいます。
ダンス競技会のヒート割も、条件付きランダムの考えがよさそうです。