Časovni zamik predvajanja zvoka

Pomoč pri delu z MS Excelom
Odgovori
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Časovni zamik predvajanja zvoka

Odgovor Napisal/-a cedra »

Pozdravljeni!

Potrebujem in prosim za pomoč pri naslednjem problemu:
Na delovni list sem vstavil 3 zvočne predmete (Wave sound) in nato posnel, napisal sledeč makro:

Koda: Izberi vse


 Private Sub Worksheet_Activate()

Range("A13") = "Danes je " & Range("F2") & ", " & Date
    ActiveSheet.Shapes("Object 36").Select
    Selection.Verb
    
    Nadaljuj_zvok
End Sub
'_______________________________________________

Sub Nadaljuj_zvok()


Select Case Range("F1").Value

    
   Case Is = 1
   
 ActiveSheet.Shapes("Object 37").Select
    Selection.Verb
    
   Case Is = 2
   ActiveSheet.Shapes("Object 38").Select
    Selection.Verb

   'se bo še nadaljevalo
   '...
   '...
   '...

   End Select
   
End Sub

Problem pa je sedaj v tem, da se glede na select oba zvoka pojavita ob istem času :cry:
Najprej sem imel oba makra združena, nato sem jih razbil na dva dela, pa ne pomaga nič. Zvoka se pojavita ob istem času :!:
Kako dopovedati drugemu zvoku naj počaka, da se prvi odvrti do konca :roll:

Naj povem še, da bo na koncu teh zvokov še nekaj več. To je le primer

Pa še eno vprašanje: se da te "Object 38" itd, poimenovati kako drugače, saj trenutno poimenovanje ne pove nič...Na kakšen način ta imena lahko spremenim?

Prosim, help :P

lp

cedra
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

1.
Če želite v Excelu "igrati" zvoke, potem uporabite seledečo kodo:

Koda: Izberi vse

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _
        (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
  
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000

' www.matjazev.net
' 16.05.2006
Sub Zaigraj()
    WAVFile = "C:\WINDOWS\Media\chimes.wav"
    PlaySound WAVFile, 0&, SND_ASYNC Or SND_FILENAME
    
    WAVFile = "C:\WINDOWS\Media\onestop.mid"
    PlaySound WAVFile, 0&, SND_ASYNC Or SND_FILENAME
End Sub
Na ta načni, vam Excela ni potrebno "packati" z objekti, temveč datoteke lepo igrate direktno iz diska.

2.
Kar pa se tiče preimenovanja objektov (če bi jih še imeli :) ), pa jih preimenujete preprosto tako, da objekt izberete in se postavite v vnosno polje levo od polja za vnos formul ter tam vpišete novo ime.
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Zdravo!

Hvala za hiter odgovor

Še vedno pa stvar ni vredu. Zdaj mi predvaja samo zadnji posnetek. Kako to?

lp

cedra
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Pri kodi, ki sem vam jo priložil v prejšnjem odgovoru, vam zaigra samo zadnji zvok?
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

zdravo!

Takole je: mid datoteke sploh ne zaigra, wav pa samo v primeru, da jo dam na drugo mesto. Poizkusil sem tudi s svojimi wav datotekami in naj naredim karkoli, vedno zaigra samo tisto, ki je druga oz. zadnja :cry:

lp

cedra
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

:oops:, Moja napaka,

Ko ste postavili vprašanje odgovora seveda nisem vedel iz glave in zato sem se z rešitvami pač malce igral in vam na koncu prilepil rešitev, ki zvoke proizvaja asinhrono - to je enega z drugim - vi slišite zadnjega. Vi pa želite zvoke proizvajati sinhrono, torej enega za drugim. Pravilno je torej takole:

Koda: Izberi vse

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _
        (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
 
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000

' www.matjazev.net
' 17.05.2006
Sub Zaigraj()
    WAVFile = "C:\WINDOWS\Media\chimes.wav"
    PlaySound WAVFile, 0&, SND_SYNC Or SND_FILENAME
   
    WAVFile = "C:\WINDOWS\Media\onestop.mid"
    PlaySound WAVFile, 0&, SND_SYNC Or SND_FILENAME
End Sub
V kodi je dodana konstanta SND_SYNC (sinhrono predvajanje), prej pa je bilo SND_ASYNC (asinhrono).
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Pozdrav!

To pa je tisto pravo :lol:
Hvala za Vaš trud.

lp,

cedra
Odgovori