在我的一个程序里面,要求调用并播放MP3文件和调用EXCEL文件并读取内容。
因为要考虑安装路径不定的问题,所以采用相对地址:VB.APP.PATH
相关代码如下:
mciSendString "play " & VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\sound\" & Command1(0).Caption & ".mp3", vbNullString, 0, 0 '调用播放MP3文件
................
Set xlsWb = xlsApp.Workbooks.Open(VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\字库.xls") '打开的EXCEL文档路径
.................编译后,将程序存放在另一个位置,运行时EXCEL能打开而MP3不能打开。
不知哪里有错,请各位指点。
谢谢!!
因为要考虑安装路径不定的问题,所以采用相对地址:VB.APP.PATH
相关代码如下:
mciSendString "play " & VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\sound\" & Command1(0).Caption & ".mp3", vbNullString, 0, 0 '调用播放MP3文件
................
Set xlsWb = xlsApp.Workbooks.Open(VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\字库.xls") '打开的EXCEL文档路径
.................编译后,将程序存放在另一个位置,运行时EXCEL能打开而MP3不能打开。
不知哪里有错,请各位指点。
谢谢!!
==请试一试。
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Const MAX_PATH = 260Private Function GetPathName(ByVal PathName As String) As String
Dim lngRet As Long
Dim strTmp As String
If InStr(1, PathName, " ", vbTextCompare) Then ' 如果文件路径中包含空格,则转换成短文件名格式
strTmp = Space$(MAX_PATH)
lngRet = GetShortPathName(PathName, strTmp, MAX_PATH)
If lngRet > 0 Then
GetPathName = Left$(strTmp, lngRet)
End If Else
GetPathName = PathName
End If
End Function'测试
mciSendString "play " & GetPathName(APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\sound\" & Command1(0).Caption & ".mp3"), vbNullString, 0, 0
是不是PLAY与OPEN不一样?
因为我用绝对地址时就不存在这个问题,即不用"["。
我改成:
mciSendString "play " & "[" & VB.App.Path & "\sound\" & Command1(0).Caption & ".mp3" & "]", vbNullString, 0, 0 '
现在在原来目录上都不行。
怎么办呀?
太怪了,(D:\Program Files也不行)。
==改用双引号再请试一试。
======================================
用debug.print "play " & """" & VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\sound\" & Command1(0).Caption & ".mp3" & """"
看看与你的绝对路径是否一样。