エクセル2016を使用しています。
「Sheet3」の「C4セル」に数値を入力してエンターキーを押したら、2秒程のMP3ファイルを再生する方法はありますでしょうか?
バーコードリーダーでバーコードを読み込むと、数値が入力されてエンターキーが押されます。
今回の質問は、バーコードの読み取り漏れを防ぎたいという目的です。
ちなみにMP3ファイルの保存先パスは以下のとおりです。
C:\Users\PC\Music\iTunes\iTunes Media\Music
この下にある「abc」というファイルだと仮定します。
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
【「Sheet3」の「C4セル」に数値を入力してエンターキーを押したら】ということを条件にするのは難しいです。(できなくはありません)
それよりも、【バーコードリーダーでバーコードを読み込むと、数値が入力されてエンターキーが押されます。】という動作はVBAで行っているのではないでしょうか?
その動作の最後に、音を鳴らす処理を実行するのでは不十分でしょうか?
次に任意のMP3ファイルを実行するという動作についてですが、これもEXCEL内だけでもできなくはないと思いますが、通常は外部のメディアプレイヤー(Windows Media Player等)を呼び出して再生することになるかと思います。
目的が「バーコードの読み取り漏れを防ぎたい」ということなのでしたら、やりたいことはバーコードリーダーの操作者が、きちんと読み取れたか読み取れなかったかを音によって判断したいということですよね?
であれば、音の種類はこだわらなくても良いかと思いますので、VBA標準の音を鳴らす処理を用いてはどうでしょうか?→参考リンク
私の提案としては、「数値が入力されてエンターキーを押す」という動作を定義しているVBAのコードに対して、エンターキーを押す処理の次にBeep音を鳴らすというコードを入れる、ということです。これならスピーディーに実装できそうです。
投稿2017/06/25 12:51
総合スコア1947
0
ベストアンサー
この質問は「MP3の再生」と「エンターキーで処理」の2点ありますね。
MP3の再生
まずMP3の再生に関しては、外部プレイヤー(Windows Media Player等)を呼び出して再生する方法とAPIを利用する方法があります。
前者だとプレイヤー自身が立ち上がってしまうので後者をお薦めします。
標準モジュールに下記をコピーしてください。
Private Declare 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 Sub PlaySound() Dim SoundFile As String, rc As Long SoundFile = "C:\Users\PC\Music\iTunes\iTunes Media\abc.mp3" If Dir(SoundFile) = "" Then MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation Exit Sub End If SoundFile = Chr(34) & SoundFile & Chr(34) 'スペース対策 rc = mciSendString("Open " & SoundFile, "", 0, 0) rc = mciSendString("Play " & SoundFile & " wait", "", 0, 0) rc = mciSendString("Close " & SoundFile, "", 0, 0) If rc <> 0 Then MsgBox rc & " のエラーです" End If End Sub
PlaySound
を Call
すれば再生されます。
注意勧告が目的なら、Beep でビープ音を鳴らすというのでもいいかと。
エンターキーで処理をする
エンターキーで何らかの処理をさせるには、他の方の回答にもありますワークシートのChangeイベントが簡単でしょう。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$4" Then PlaySound 'MP3 再生処理 End If End Sub
ただし、Enterキー以外でも反応してしまいます。Deleteキーや貼り付けなどの操作でワークシートのデータが変更されたときに反応します。
Enterキーのみに反応させたい場合は、Application.OnKey を使うといいでしょう。
'Enterキーにマクロを割り当て Sub Onkey_Set() Application.OnKey "~", "PressEnter" End Sub 'デモ(Sheet1のセルA1のみで機能させる) Sub PressEnter() If ActiveCell.Address = "$C$4" Then PlaySound 'MP3 再生処理 End If SendKeys "~" End Sub 'Enterキーを元の機能に戻す Sub Onkey_Off() Application.OnKey "~" End Sub
OnKeyに割り当てると、すべてのシートのセルでエンターキーが無効になってしまうので、SendKeysでエンターキーを送る処理を追加しています。
バーコードの整合性チェック
今回の要件がバーコードリーダーで正しくバーコードが読み取れているかどうかのチェックが最終目的だと思われますが、チェックデジットを利用する方法があります。
JANコードのチェックデジットを計算する関数 ~ Access VBA自作関数 - Office Tanabe
バーコードリーダーでの読み取りエラーや、うっかりユーザーが編集してしまったりなども考慮すると、Worksheet_Change でデータが更新されたときに、チェックデジットを使って正しいバーコードかどうかをチェックして、正しくない場合に、警告音をだすというような仕様にするのがいいのではないでしょうか。
補足説明
詳細な仕様が判明したようでので、それに合わせて補足です。
判明している仕様。
- 「C4セル」にバーコードリーダーからJANコードを読み込む。
- 毎回入力するセルは「C4」となる。
- 「C4」をキーワードにして「D4」セルにVLOOKUPで表品名を表示している。
MP3再生のコードは、Windows APIの関数を参照してVBAから呼び出しているだけです。
参照するコードは理解するのは難しいかもしれませんが、そういう魔法の呪文だと思って、コピーして使えばいいでしょう。そのままコピーして標準モジュールに貼り付けてください。
今回の仕様なら、ワークシートのChangeイベントを使う方法でも問題ないでしょう。
その場合のコード例。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$4" And ActiveCell.Address = "$C$5" Then If Not IsError(Range("D4").Value) Then PlaySound 'MP3 再生処理 Range("C4").Select End If End If End Sub
コピー先は『「シート名」のあるタブ内で右クリックして、出てきたメニューの「コードの表示」をクリック。』して表示された場所です。
Enterキーの判定は、Changeイベントの発生したセル(Target.Address)、移動先のセル(ActiveCell.Address)で判定しています。
さらに、「D4」セルにエラーなく商品名が表示されているかどうか、で読み込まれたバーコードが正しいかどうか判断しています。
完全な判定ではないですが、通常の運用なら問題はないと思われます。
投稿2017/06/26 02:30
編集2017/06/26 09:03総合スコア33620
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/26 06:21
2017/06/26 08:27
退会済みユーザー
2017/06/27 00:52
0
Changeイベントで処理すれば良いと思います。
VBA
1Private Sub Worksheet_Change(ByVal Target As Range) 2 ' C4セルか? 3 If Target.Column = 3 And Target.Row = 4 Then 4 ' 再生処理 5 End If 6End Sub
ただ音の再生は方法が色々あるので、「VBA mp3 再生」などで検索してみてください。
以下のサイトはなんとなくしっかり作り込んでそうな感じでした。
http://excel.syogyoumujou.com/vba/mci.html
※職場で回答していて音が出せない環境なので、実際に使えるかは試しておりません。
投稿2017/06/26 00:00
総合スコア16996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/26 04:37 編集
2017/06/26 04:51
退会済みユーザー
2017/06/26 05:07 編集
2017/06/26 05:24
退会済みユーザー
2017/06/27 00:54
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/25 15:23 編集
2017/06/26 01:12 編集
退会済みユーザー
2017/06/26 04:29
2017/06/26 06:33
退会済みユーザー
2017/06/27 01:03