2012年7月28日 星期六

EXCEL 發出聲音[用(自定)函數]

是利用(自定)函數去發出聲音的~也蠻實用的~

在 Excel 中, 按 Alt F11 進入 Visiual Basic 編輯器畫面,
點選 [插入]/[模組], 畫面會跳出程式碼視窗, 在裡面複製貼上如下程式:
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Function SndPlay(Pathname As String) As Long
SndPlay = sndPlaySound(Pathname, SND_ASYNC)
End Function

然後切換回到 Excel 工作表, 在某個儲存格(不是A1或C5)輸入如下公式:
=IF(A1 < C5,sndplay("C:\Windows\Media\Windows XP 電話鈴聲.wav"),0)

註: 需確定 "C:\Windows\Media\ "裡有 "Windows XP 電話鈴聲.wav" 這個檔案
於是在 A1 和 C5 裡分別輸入數字, 當 A1 小於 C5 的時候, 
電腦就會播放電話鈴聲

注意: 如果大型的聲音 (.wav) 音效檔所指定,而這個呼叫會失敗,以播放整個檔案,您需要調整適當的音效驅動程式上的設定。


轉載於 http://tw.group.knowledge.yahoo.com/smt-knowldge/listitem/view?iid=15
參考 : http://support.microsoft.com/kb/86281/zh-tw

7 則留言:

  1. 您好,請問一下,我是把這個公式用在股票警示上,
    但我發現一個問題,就是只要把A1 < C5,改成大於,
    就會發生就算c5沒有任何數字也會發出聲音,
    必須刻意把c5的數字改成大於a1才行,請問要如何改善這種情況呢??謝謝

    回覆刪除
    回覆
    1. 你可試一下公式這樣改
      =IF(AND( A1<>"" , A1 > C5),sndplay("C:\Windows\Media\Windows XP 電話鈴聲.wav"),0)

      刪除
  2. 感謝您的回覆,問題已經解決,另外想再請教2個問題,不知您對DDE導入數據有否研究,由於這個公式小弟是拿來作為股票價個穿價時的警示聲,但目前遇到2個問題,第一個是由於DDE導入的價格會一直跳動,而這個公式是價格每變動一次就去計算,就會變成警示聲一直響,必須改掉C5的數字後才會停,不知有無可能設計成穿價時只發出一次警示聲,之後需要時在重新設定即可,也就是有點ON/OFF的概念,不知EXCEL有無辦法做到。
    第2個問題是股票在開盤前會有個清盤的動作,此時A1的格子內沒有數字,只會有底線像這樣 _ _ _ _ _ 但背後的DDE連結 =MMSDDE|TWSE!'3023.125' 還是存在,
    但此時只要是 A1 > C5,只要是大於,不管C5裡面的數字是多少公式都會成立,都會發出警示聲,請問這個問題有辦法改善嗎? 能否只以格子內真正顯示出來的數字去計算呢?? 謝謝

    回覆刪除
  3. 您好,第2個問題我剛發現只要符號是大於,C5就算不是打數字,打國字也一樣會使公式成立而發出警示聲,請問要如何改善呢?謝謝

    回覆刪除
  4. 您好,您的東西我正需要,我出現了這個問題,請問可以協助我嗎
    "編輯錯誤,這個專案的程式碼必須更新才能用於64位元系統,請檢視和更新Declare的陳述式,然後以PtrSafe屬性加以標記"
    謝謝你

    回覆刪除
    回覆
    1. 我在網路找到了,謝謝

      刪除
    2. 恭喜你 . 之前我未有時間幫手找 . 我都係依靠GOOGLE大神幫我找.

      刪除