[MS Word] Dźwięk po zakończeniu makro


(kamil_w) #1

Wie ktoś z was co zrobić, żeby odtworzyć dźwięk w MS Wordzie za pomocą macro? Mam makro, które wykonuje się dość długo i chciałbym być informowany dźwiękiem, gdy zakończy ono działanie.


(Drobok) #2

sWAVFile = "Sound.wav"

PlaySound(sWAVFile);

oc na końcu


(kamil_w) #3
Sub test()

'

' test Makro

'

'

sWAVFile = "c:\Windows\Media\tada.wav"

PlaySound(sWAVFile);


End Sub

Syntax error na


(Drobok) #4
Option Explicit


 'API Class to take care of playing the file

Public Declare Function sndPlaySound32 Lib "winmm.dll" _

Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

ByVal uFlags As Long) As Long


Sub test()

     'Call Api to play LoadIt.wav which is in the same folder as

     'the active document!

    Call sndPlaySound32("test.waw", 0)

End Sub

Był prosty sposób, bynajmniej tak mi się wydaje. Ale jakoś nie umiem tego znaleźć ;/


(kamil_w) #5

To też mi wysypuje błąd. Sprawdzałeś to, czy kopiujesz skądś?


(Drobok) #6

Ehh, wav ma być :slight_smile: Działa sprawdzałem. A ten pierwszy był z pamięci (korzystałem kiedyś z czegoś w ten deseń, ale musiało mi się coś pomieszać)


(kamil_w) #7

A u mnie nie działa:


(Drobok) #8

Problemem nie jest kod tylko 64bitowy system. Spróbuj zmienić początek na:

Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _

      Alias "PlaySoundA" (ByVal lpszName As String, _

      ByVal hModule As LongPtr, ByVal dwFlags As LongPtr) As LongPtr

Jak radzi http://www.mrexcel.com/forum/showthread.php?t=484633


(kamil_w) #9

Wyskakuje błąd

na


(Drobok) #10

Po call ma być PlaySoundA a nie sndPlaySound32. Oczywiście możesz zmienić w alias PlaySoundA na sndPlaySound32


(kamil_w) #11
Option Explicit


 Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _

      Alias "PlaySoundA" (ByVal lpszName As String, _

      ByVal hModule As LongPtr, ByVal dwFlags As LongPtr) As LongPtr


Sub test()

     'Call Api to play LoadIt.wav which is in the same folder as

     'the active document!

    Call PlaySoundA("c:\Windows\Media\tada.wav", 0)

End Sub

Efekt:


(Drobok) #12

Pomieszało mi się trochę, sry

Option Explicit


 Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _

      Alias "PlaySoundA" (ByVal lpszName As String, _

      ByVal hModule As LongPtr, ByVal dwFlags As LongPtr) As LongPtr


Sub test()

     'Call Api to play LoadIt.wav which is in the same folder as

     'the active document!

    Call PlaySound("c:\Windows\Media\tada.wav", 0, 0)

End Sub

Działa, sprawdzałem :slight_smile:


(kamil_w) #13

Ehh.

Działa, ale teraz mi się moje makro sypie.

Sub test()

For i = 1 To 20

zadanie pętli

Next i

Call PlaySound("c:\Windows\Media\tada.wav", 0, 0)

End Sub

Wyskakuje mi, że i nie jest zadeklarowane. ;/ Później nad tym siądę. Piątek wieczór, więc wypada spotkać się z przyjaciółmi.


(Drobok) #14
Option Explicit

Dim i

Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _

      Alias "PlaySoundA" (ByVal lpszName As String, _

      ByVal hModule As LongPtr, ByVal dwFlags As LongPtr) As LongPtr


Sub test()

    For i = 1 To 3

    MsgBox ("costam")

    Next i

    Call PlaySound("c:\Windows\Media\tada.wav", 0, 0)

End Sub