在我的一个程序里面,要求调用并播放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不能打开。
不知哪里有错,请各位指点。
谢谢!!

解决方案 »

  1.   

     mciSendString "play " & "[" & VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\sound\" & Command1(0).Caption & ".mp3" & "]", vbNullString, 0, 0        '调用播放MP3文件 
    ==请试一试。
      

  2.   

    文件路径中包含空格导致。
    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
      

  3.   

    谢谢!
    是不是PLAY与OPEN不一样?
    因为我用绝对地址时就不存在这个问题,即不用"["。
      

  4.   

    与你确认一下,vb.app.path不是在根目录吧?
      

  5.   

    如果在根目录,要把\Program Files开始的\去掉。
      

  6.   

    不是在根目录。
    我改成:
    mciSendString "play " & "[" & VB.App.Path & "\sound\" & Command1(0).Caption & ".mp3" & "]", vbNullString, 0, 0 '
    现在在原来目录上都不行。
    怎么办呀?
      

  7.   

    另外,我发现,按原来的写法,用setup factory7.0制作成安装文件,安装在(默认)C:\Program Files下,然后运行软件时却不能调出MP3播放声音而EXCEL内容能显示,如果安装在任何其他目录里则一切正常。
    太怪了,(D:\Program Files也不行)。
      

  8.   

    mciSendString "play " & """" & VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\sound\" & Command1(0).Caption & ".mp3" & """", vbNullString, 0, 0        '调用播放MP3文件 
    ==改用双引号再请试一试。
      

  9.   

    可能是因为Program Files中有空格,如上边我说的加上双引号再试试。
      

  10.   

    可能是mciSendString函数的限制,加单引号双引号或者其他分隔字符都无效/
      

  11.   

    因为我用绝对地址时就不存在这个问题?
    ======================================
    用debug.print "play " & """" & VB.APP.PATH & "\Program Files\幼儿识字乐园(试用版)\库\sound\" & Command1(0).Caption & ".mp3" & """"
    看看与你的绝对路径是否一样。
      

  12.   

    wangmu:谢谢你不厌其繁的回复和指教,我一定要把它搞定,请你继续给我指点。