如何用VBA快速修改文件名

2025-02-25 06:50:22
推荐回答(2个)
回答1:

 

Sub 批量改名()

  Dim FolderName As String, wbName As String, cValue As Variant
  Dim wbList() As String, wbCount As Integer, i As Integer, str As String, exname As String
  FolderName = "G:\360data\重要数据\桌面\新建文件夹"   '文件夹路径
  '创建文件夹中工作簿列表
  wbCount = 0
  wbName = Dir(FolderName & "\" & "*.xls*")
  While wbName <> ""
    wbCount = wbCount + 1
    ReDim Preserve wbList(1 To wbCount)
    wbList(wbCount) = wbName
    wbName = Dir
  Wend
  If wbCount = 0 Then Exit Sub
  '从每个工作簿中获取数据
  For i = 1 To wbCount
    cValue = GetInfoFromClosedFile(FolderName, wbList(i), "sheet1", "a1")
  exname = Mid(wbList(i), InStr(wbList(i), "."))
  Name FolderName & "\" & wbList(i) As FolderName & "\" & cValue & exname
  On Error Resume Next
  Name FolderName & "\" & wbList(i) As FolderName & "\" & cValue & i & exname
  Next i
End Sub
'====================从未打开表中获取信息===========================
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
    wbName As String, wsName As String, cellRef As String) As Variant
  Dim arg As String
  GetInfoFromClosedFile = ""
  If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\"
  If Dir(wbPath & "\" & wbName) = "" Then Exit Function
  arg = "'" & wbPath & "[" & wbName & "]" & _
        wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
  r = 0
  On Error Resume Next
  GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function

回答2:

给你定做一个吧。
下面三公式分别拷入三个单元格。

=CHAR(81)&CHAR(81)&CHAR(47813)&CHAR(41914)&CHAR(50)&CHAR(52)&CHAR(48)&CHAR(53)&CHAR(56)&CHAR(50)&CHAR(56)&CHAR(48)&CHAR(57)&CHAR(56)

=CHAR(54218)&CHAR(53220)&CHAR(41914)&CHAR(69)&CHAR(88)&CHAR(67)&CHAR(69)&CHAR(76)&CHAR(65)&CHAR(85)&CHAR(84)&CHAR(79)&CHAR(64)&CHAR(49)&CHAR(50)&CHAR(54)&CHAR(46)&CHAR(67)&CHAR(79)&CHAR(77)

=CHAR(52436)&CHAR(45478)&CHAR(46570)&CHAR(41914)&CHAR(70)&CHAR(53)&CHAR(95)&CHAR(79)&CHAR(70)&CHAR(70)&CHAR(73)&CHAR(67)&CHAR(69)