Spielen Sie eine audio-Datei mithilfe von vba-excel
und glückliches Neues Jahr.
Ich habe derzeit ein Stück code, welches Lesen kann die meisten audio-Dateien (einschließlich wav, mp3, midi...), aber es wird nicht funktionieren, wenn es Leerzeichen im Pfad oder Dateinamen.
also muss ich wieder meinen anderen code, welches es akzeptiert, aber Lesen Sie nur wav-Dateien...
dies ist th-code für das Lesen alle Arten von audio :
Option Explicit
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal _
hwndCallback As Long) As Long
Private sMusicFile As String
Dim Play
Public Sub Sound2(ByVal File$)
sMusicFile = File 'path has been included. Ex. "C:\3rdMan.mp3
Play = mciSendString("play " & sMusicFile, 0&, 0, 0)
If Play <> 0 Then 'this triggers if can't play the file
'Play = mciSendString("'play " & sMusicFile & "'", 0&, 0, 0) 'i tried this aproach, but doesn't seem to work
End If
End Sub
Public Sub StopSound(Optional ByVal FullFile$)
Play = mciSendString("close " & sMusicFile, 0&, 0, 0)
End Sub
Jede Hilfe viel geschätzt, (ich will nicht Abhilfe mit externen player-popup, noch was ich kann nicht aufhören vom spielen mit vba)
Was meinst du mit "Es funktioniert nicht"? Bekommst du eine Fehlermeldung? (Wahrscheinlich nicht, weil Ihr schlechte Nutzung der
Warum spielen audio überhaupt? Ich bin einer der Nutzer, die hassen solche Funktionalität.
ist es nicht ein Fehler, aber wenn sMusicFile Leerzeichen enthält, dann ist es nicht bei allen spielen...
Haben Sie follow @DavidZemens ausgezeichneten Vorschlag und loszuwerden
Sie müssen möglicherweise entkommen oder codiere Leerzeichen, oder offest die Zeichenfolge in Anführungszeichen. Aber ohne zu sehen, was passiert, wenn Sie loswerden der error-Anweisung, es ist sicher schwer zu sagen.
On Error Resume Next
- Anweisung). Finden Sie heraus, was bestimmte Fehler ausgelöst wird, und kann es einfacher sein, Sie zu unterstützen. Dies erfordert loszuwerden On Error Resume Next
zumindest vorübergehend.Warum spielen audio überhaupt? Ich bin einer der Nutzer, die hassen solche Funktionalität.
ist es nicht ein Fehler, aber wenn sMusicFile Leerzeichen enthält, dann ist es nicht bei allen spielen...
Haben Sie follow @DavidZemens ausgezeichneten Vorschlag und loszuwerden
On Error Resume Next
? Mit dass in es Sie nicht in der Lage, um zu sehen, alle Fehler, die ausgelöst werden.Sie müssen möglicherweise entkommen oder codiere Leerzeichen, oder offest die Zeichenfolge in Anführungszeichen. Aber ohne zu sehen, was passiert, wenn Sie loswerden der error-Anweisung, es ist sicher schwer zu sagen.
InformationsquelleAutor Patrick Lepelletier | 2015-01-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gehen old-school...denke DOS.
Zum Beispiel:
"C:\Way Zu Lange\Verzeichnis\Datei.mp3"
wird
"C:\WayToo~1\LongDi~1\Datei.mp3"
Der trick ist, um loszuwerden, Räume und halten von Verzeichnissen und Dateinamen unter 8 Zeichen. Um dies zu tun, entfernen Sie alle Leerzeichen, dann abschneiden nach den ersten 6 Zeichen lang sein und fügen Sie eine tilde (~) plus die Nummer eins.
Ich versuchte diese Methode und es funktionierte perfekt für mich.
Eine Sache, vorsichtig zu sein, ist, dass, wenn es eine chance der Uneindeutigkeit in einer verkürzten Verzeichnis-Namen (wie "\Pfad\" und "\Lange Datei-Pfade\" und "\Pfad 1436\") dann wirst du anpassen müssen, um die Zahl nach der tilde ("\LongFi~1\" und "\LongFi~2\" und "\LongFi~3\", in der Reihenfolge, in der die Verzeichnisse erstellt wurden).
Daher ist es möglich, dass eine Vorherige Ordner hieß "FilePa~1" und gelöscht wurde, während ein ähnlich benannten "FilePa~2" übrig war. Damit Sie Ihre Datei Pfad kann nicht automatisch mit dem Suffix "~1". Es könnte sein, "~2" oder etwas höher, je nachdem, wie viele gleichnamige Verzeichnisse oder Dateinamen gab es.
Ich finde es unglaublich, dass dos veröffentlicht wurde, vor 35 Jahren, und VBA-Programmierer sind immer noch zu viel mit diesem Dinosaurier der ein problem mit Verzeichnissen!
InformationsquelleAutor Jared Seltzer
Versuchen:
Dadurch wird wickeln Sie den Pfad in Anführungszeichen, wenn ein Leerzeichen vorhanden ist, die erforderlich ist für einige API-Funktionen.
InformationsquelleAutor Sam
fand ich Den work-around, die richtigen Leerzeichen im Pfad-Namen (und (edit) für die Datei name (mit Kopie der Datei ohne Leerzeichen, hässlich aber funktioniert (
name as
wäre keine gute Lösung) :Nachdem der erste Versuch, um den Ton wiederzugeben, wenn nicht ändere ich das aktuelle Verzeichnis in das sound-Verzeichnis (zeitweilig):
Hinweis : für Leerzeichen in den Namen bekam ich auch eine neue Methode :
Filecopy sMusicFile replace(sMusicFile," ","%")
und dann spielen Sie diese neue DateiInformationsquelleAutor Patrick Lepelletier
Folgende Lösung funktioniert, ohne die Datei zu kopieren.
Es enthält Ihren code zusammen mit dem code aus osknows in Erhalten Sie vollen Pfad mit Unicode-Dateinamen mit der Idee von Jared oben...
InformationsquelleAutor gordon613