参考SHFileOperation,下面这个就可以了
      Public Const FO_RENAME As Long = &H4      Public Const FOF_MULTIDESTFILES As Long = &H1
      Public Const FOF_CONFIRMMOUSE As Long = &H2
      Public Const FOF_SILENT As Long = &H4
      Public Const FOF_RENAMEONCOLLISION As Long = &H8
      Public Const FOF_NOCONFIRMATION As Long = &H10
      Public Const FOF_WANTMAPPINGHANDLE As Long = &H20
      Public Const FOF_CREATEPROGRESSDLG As Long = &H0
      Public Const FOF_ALLOWUNDO As Long = &H40
      Public Const FOF_FILESONLY As Long = &H80
      Public Const FOF_SIMPLEPROGRESS As Long = &H100
      Public Const FOF_NOCONFIRMMKDIR As Long = &H200      Type SHFILEOPSTRUCT
         hwnd As Long
         wFunc As Long
         pFrom As String
         pTo As String
         fFlags As Long
         fAnyOperationsAborted As Long
         hNameMappings As Long
         lpszProgressTitle As String
      End Type      Declare Function SHFileOperation Lib "Shell32.dll" _
         Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Sub Command1_Click()
    Dim result As Long
    Dim fileop As SHFILEOPSTRUCT
    With fileop
       .hwnd = Me.hwnd       .wFunc = FO_RENAME       .pFrom = "c:\a.bmp" & _
          vbNullChar & vbNullChar       .pTo = "c:\a.aaa" & vbNullChar & vbNullChar       .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
    End With    result = SHFileOperation(fileop)    If result <> 0 Then
       MsgBox result, , "Copy Operation Failed"
    Else
       If fileop.fAnyOperationsAborted <> 0 Then
          MsgBox fileop.fAnyOperationsAborted, , "Operation Aborted"
       End If
    End If
End Sub