Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7027|回复: 11

[已解决]批量更改后缀

[复制链接]
发表于 2013-8-5 18:55 | 显示全部楼层 |阅读模式
批量更改图片后缀名。
将 后缀名为:"bmp","jpg", "tif", "png" 的图片

改为: "gif" 后缀名的图片。


最佳答案
2013-8-5 21:09
批量更改后缀3.rar (722.66 KB, 下载次数: 62)

批量更改后缀.rar

716.8 KB, 下载次数: 41

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2013-8-5 19:45 | 显示全部楼层
本帖最后由 张雄友 于 2013-8-5 19:47 编辑

就是将文件夹中的所有后缀名为:"bmp","jpg", "tif", "png" 的图片

改为: "gif" 后缀名的图片。

爱疯大师,图片不是有很多类型吗?就是将后缀名为:"bmp","jpg", "tif", "png" 的图片改为: "gif" 后缀名的图片。
回复

使用道具 举报

发表于 2013-8-5 20:30 | 显示全部楼层
Dim FSO As Object, a(1 To 10 ^ 4, 1 To 3), s
Sub test1()
    Dim i, oldpathname, newpathname
   
    Set FSO = CreateObject("scripting.filesystemobject")
    test2 ThisWorkbook.Path
    '
    For i = 1 To s
        If InStr("bmp,jpg,tif,png", a(i, 3)) Then
            oldpathname = a(i, 1) & a(i, 2) & "." & a(i, 3)
            newpathname = a(i, 1) & a(i, 2) & "." & "gif"
            Name oldpathname As newpathname
        End If
    Next i
End Sub
'
Sub test2(MyPath As String)
    Dim Folder As Object, SubFolder As Object
    Dim FileCollection As Object, FileName As Object
    '
    Set Folder = FSO.getfolder(MyPath)
    Set FileCollection = Folder.Files
    For Each FileName In FileCollection
        s = s + 1
        a(s, 1) = MyPath & "\"
        a(s, 2) = FSO.GetBaseName(MyPath & FileName)
        a(s, 3) = FSO.GetExtensionName(MyPath & FileName)
    Next
    '
    For Each SubFolder In Folder.SubFolders
        test2 SubFolder.Path
    Next
End Sub

批量更改后缀2.rar (721.31 KB, 下载次数: 15)
回复

使用道具 举报

 楼主| 发表于 2013-8-5 20:36 | 显示全部楼层
爱疯 发表于 2013-8-5 20:30
Dim FSO As Object, a(1 To 10 ^ 4, 1 To 3), s
Sub test1()
    Dim i, oldpathname, newpathname

全部更改后,可不可以这样,就是如果保存了,就全部更改;

如果不保存就恢复原来的样子。可以做到吗?
回复

使用道具 举报

发表于 2013-8-5 20:44 | 显示全部楼层
“如果保存了,就全部更改”
这句是什么含义?
回复

使用道具 举报

 楼主| 发表于 2013-8-5 20:47 | 显示全部楼层
爱疯 发表于 2013-8-5 20:44
“如果保存了,就全部更改”
这句是什么含义?

就是执行代码后,关闭EXCEL工作簿,提示是否保存,如果保存就全部更改后缀,如果不保存,就不更改后缀。
回复

使用道具 举报

发表于 2013-8-5 20:56 | 显示全部楼层
在工作簿里修改:在关闭工作簿并且还未保存时,会提示是否保存。
执行改名操作:name语句执行后,文件名就改了,不会有提示。

所以,只有在执行test1之前,加个msgbox,提醒是否改名。
回复

使用道具 举报

 楼主| 发表于 2013-8-5 20:58 | 显示全部楼层
爱疯 发表于 2013-8-5 20:56
在工作簿里修改:在关闭工作簿并且还未保存时,会提示是否保存。
执行改名操作:name语句执行后,文件名就 ...

在哪里改?
回复

使用道具 举报

发表于 2013-8-5 21:09 | 显示全部楼层    本楼为最佳答案   
批量更改后缀3.rar (722.66 KB, 下载次数: 62)
回复

使用道具 举报

发表于 2013-8-5 22:56 | 显示全部楼层
Option Explicit
Dim FSO As Object
Sub RName()
    Set FSO = CreateObject("scripting.filesystemobject")
    BatchReName ThisWorkbook.Path & Application.PathSeparator
End Sub

Sub BatchReName(FolderPath)
On Error Resume Next
    Dim Folder As Object
    Dim SubFolder As Object
    Dim SFile As Object
    Set Folder = FSO.getfolder(FolderPath)
    For Each SFile In Folder.Files
        If InStr(SFile.Name, ".bmp") Then SFile.Name = Replace(SFile.Name, ".bmp", ".gif")
        If InStr(SFile.Name, ".jpg") Then SFile.Name = Replace(SFile.Name, ".jpg", ".gif")
        If InStr(SFile.Name, ".tif") Then SFile.Name = Replace(SFile.Name, ".tif", ".gif")
        If InStr(SFile.Name, ".png") Then SFile.Name = Replace(SFile.Name, ".png", ".gif")
    Next
    For Each SubFolder In Folder.SubFolders
        BatchReName SubFolder
    Next
End Sub

评分

参与人数 1 +3 收起 理由
张雄友 + 3 也是最佳的!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 22:23 , Processed in 0.367737 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表