我用funSaveFile保存完之后,我想把excel文件的扩展名改为其他的格式如*.er,系统不认识的自定义的扩展名。
     strErrMsg = funSaveFile(strFileName, strSelectItemAnswer)
    
     '//重命名文件
     Dim strTest As String
     strTest = strFileName
     strTest = "rename " & strTest & " " & "file.er"
     'Kill (strFileName)
     Shell (strTest)
在shell (strTest)这出错,说找不到文件。但是我用相同的语法copy到命令行上执行,它可以。而且在执行之前,我在磁盘上可以对它进行操作,包括对它改名。
上面的Kill (strFileName)可以执行。
我现在不会了。
Private Function funSaveFile(ByVal strFileName As String, ByRef strAnswer() As String) As String
    Dim Export          As Excel.Application
    Dim exwbook         As Excel.Workbook
    Dim exsheet         As Excel.Sheets
    
    On Error GoTo ErrorHandler
    Set Export = CreateObject("Excel.Application")
    Set exwbook = Nothing
    Set exsheet = Nothing
    Set exwbook = Export.Workbooks.Add
    'Set exsheet = exwbook.Worksheets("sheet1")
    
        
    '//第一行空出为了能加入数据
    Export.Range("a2:b101") = strAnswer
    
    '//保存输入
    exwbook.SaveAs FileName:=strFileName, WriteResPassword:="Don'tWrite", password:="Don'tOpen"
    '//退出excel
    Export.Quit
    
   
    Set Export = Nothing
    
    Set exwbook = Nothing
    Set exsheet = Nothing
    Exit Function
ErrorHandler:
    Select Case Err.Number
        Case 53
            funSaveFile = strFileName & "文件没发现!"
        Case 1004
            funSaveFile = "不能访问" & strFileName & "!"
        Case 31001
           funSaveFile = "内存溢出!"
        Case Else
            funSaveFile = "没有按装EXCEL 或其他的错误!"""
    End Select
    Set Export = Nothing
    Set exwbook = Nothing
    Set exsheet = NothingEnd Function

解决方案 »

  1.   

    rename 是一个内部命令,shell函数是无法调用内部命令的,例如dir。
      

  2.   

    改文件名的方法:
    http://www.china-askpro.com/msg7/qa57.shtml
      

  3.   

    如果要系统识别你自己定义的扩展名,得改一下注册表,改变扩展名的程序关联.
    用RegSetValue
      

  4.   

    rename  strTest ,"file.er"
      

  5.   

    1、name "a.xls","x.cr"2、shell "cmd/c rename ..."
      

  6.   

    1、name "a.xls","x.cr"2、shell "cmd/c rename ..."
      

  7.   

    TechnoFantasy(www.applevb.com) 我后用你的方法,它是很好用。
     lxcc(虫莲) ( )你的第一个方法,语法不对是 name oldname as newname.第二个语法也不对
    是 "cmd /c rename ..."
      

  8.   

    呵呵!
    对!第一个是错了!少了AS
    第二个如果你是2k的话,应该没有问题,可能加一个 cmd.com/c