HOME > エクセルVBA > サンプル > Beep

Beep


【ファイル名】Beep.xlsm
【バージョン】Ver 1.0.0.0
【作成日】2021年05月27日
【動作確認】Windows 10
【必要なソフト】Microsoft Excel 2010
【ダウンロード】Beep.zip
【説明】Windows APIのBeep関数で音を鳴らすサンプルです。
画面

【外部リンク】Windows > Apps > Win32 > API > Utilapiset.h >  Beep function

customUI14.xml
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="onLoad">
  <ribbon startFromScratch="false">
    <tabs>
      <tab id="Tab1" label="サンプル" insertBeforeMso="TabHome" keytip="S">
        <group id="Group1" label="Beep">
          <box id="Box1" boxStyle="horizontal">
            <labelControl id="label1" label="全音" />
            <button id="Button10" label=" ド " tag="262,1000" onAction="onAction" />
            <button id="Button11" label=" レ " tag="294,1000" onAction="onAction" />
            <button id="Button12" label=" ミ " tag="330,1000" onAction="onAction" />
            <button id="Button13" label="ファ" tag="349,1000" onAction="onAction" />
            <button id="Button14" label=" ソ " tag="392,1000" onAction="onAction" />
            <button id="Button15" label=" ラ " tag="440,1000" onAction="onAction" />
            <button id="Button16" label=" シ " tag="494,1000" onAction="onAction" />
            <button id="Button17" label=" ド " tag="523,1000" onAction="onAction" />
          </box>
          <box id="Box2" boxStyle="horizontal">
            <labelControl id="label2" label="半音" />
            <button id="Button20" label=" ド " tag="262,500" onAction="onAction" />
            <button id="Button21" label=" レ " tag="294,500" onAction="onAction" />
            <button id="Button22" label=" ミ " tag="330,500" onAction="onAction" />
            <button id="Button23" label="ファ" tag="349,500" onAction="onAction" />
            <button id="Button24" label=" ソ " tag="392,500" onAction="onAction" />
            <button id="Button25" label=" ラ " tag="440,500" onAction="onAction" />
            <button id="Button26" label=" シ " tag="494,500" onAction="onAction" />
            <button id="Button27" label=" ド " tag="523,500" onAction="onAction" />
          </box>
          <box id="Box3" boxStyle="horizontal">
            <labelControl id="label3" label=" 1/4" />
            <button id="Button30" label=" ド " tag="262,250" onAction="onAction" />
            <button id="Button31" label=" レ " tag="294,250" onAction="onAction" />
            <button id="Button32" label=" ミ " tag="330,250" onAction="onAction" />
            <button id="Button33" label="ファ" tag="349,250" onAction="onAction" />
            <button id="Button34" label=" ソ " tag="392,250" onAction="onAction" />
            <button id="Button35" label=" ラ " tag="440,250" onAction="onAction" />
            <button id="Button36" label=" シ " tag="494,250" onAction="onAction" />
            <button id="Button37" label=" ド " tag="523,250" onAction="onAction" />
          </box>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
このページの上

Module1
VBA.Interaction.Beep と区別するために名前を、BeepAPI にしました。
Option Explicit

Private rbRibbonUI As IRibbonUI   ' リボン

#If Win64 Then
  ' https://docs.microsoft.com/ja-jp/windows/win32/api/utilapiset/nf-utilapiset-beep
  ' dwFreq: 周波数(ヘルツ単位)37 から 32,767まで
  ' dwDuration: 継続時間(ミリ秒)
  Private Declare PtrSafe Function BeepAPI Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
#Else
  Private Declare Function BeepAPI Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
#End If

Sub onLoad(ribbon As IRibbonUI) ' リボンの初期処理
  Set rbRibbonUI = ribbon ' リボンの表示を更新できるようにするためにリボンをセットする
  rbRibbonUI.Invalidate ' リボンの表示を更新します。
End Sub

Sub onAction(control As IRibbonControl) ' 各メニューの処理
  Dim arr As Variant
  
  On Error GoTo ErrorHandler ' エラー処理ルーチン
  
  arr = Split(control.Tag, ",")
  Call BeepAPI(CLng(arr(0)), CLng(arr(1)))
  
  Exit Sub
'
ErrorHandler: ' エラー処理ルーチン
  Beep ' 警告音
  MsgBox Prompt:="エラー番号:" & Err.Number & vbCrLf & Err.Description, Buttons:=vbCritical + vbSystemModal, Title:="エラー"
End Sub

Sub BeepSample250()
  BeepAPI 262, 250 ' ド
  BeepAPI 294, 250 ' レ
  BeepAPI 330, 250 ' ミ
  BeepAPI 349, 250 ' ファ
  BeepAPI 392, 250 ' ソ
  BeepAPI 440, 250 ' ラ
  BeepAPI 494, 250 ' シ
  BeepAPI 523, 250 ' ド
End Sub

Sub BeepSample500()
  BeepAPI 262, 500 ' ド
  BeepAPI 294, 500 ' レ
  BeepAPI 330, 500 ' ミ
  BeepAPI 349, 500 ' ファ
  BeepAPI 392, 500 ' ソ
  BeepAPI 440, 500 ' ラ
  BeepAPI 494, 500 ' シ
  BeepAPI 523, 500 ' ド
End Sub

Sub BeepSample1000()
  BeepAPI 262, 1000 ' ド
  BeepAPI 294, 1000 ' レ
  BeepAPI 330, 1000 ' ミ
  BeepAPI 349, 1000 ' ファ
  BeepAPI 392, 1000 ' ソ
  BeepAPI 440, 1000 ' ラ
  BeepAPI 494, 1000 ' シ
  BeepAPI 523, 1000 ' ド
End Sub
このページの上