导航:首页 > 文件类型 > excelvba获取文件名并修改

excelvba获取文件名并修改

发布时间:2025-05-23 09:37:08

Ⅰ Excel中VBA提取文件夹名称的方法

文章介绍excel中使用vba提取文件名的操作步骤。根据需要自行修改vba提取文件名的路径和存放单元格即可。
在excel中使用VBA编写代码,可以轻松的提取某个文件夹下面的所有文件名。
比如笔者在F盘下面建立了一个文件夹,文件夹的名称是:office教程网,现在想将“office教程网”这个文件夹下面的所有文件名提取出来放在当前工作表的C列。
具体的vba提取文件名的操作如下:
1.按下ALT+F11,打开VBE编辑器。
2.执行“插入——模块”,插入模块1。

3.在右边的代码编辑窗口,复制下面的代码,然后单击“绿色箭头”或者快捷键F5键,运行代码。
Private Sub vba提取文件名()
Dim FileName As String
Dim i As Long
FileName = Dir("F:\office教程网\*.*")
i = 0
Range("C:C").ClearContents
Do While FileName > ""
i = i + 1
Cells(i, 3) = FileName
FileName = Dir
Loop
End Sub

4.关闭VBE窗口,回到工作表中,可以在C列看到F盘“office教程网”文件夹下面所有的文件名全部罗列在C列了。

关于上面的vba提取文件名的代码,请在实际使用时,根据需要修改提取文件名的路径(F:\office教程网\*.*),以及存放在C列的位置(Cells(i, 3))。

Ⅱ Excel 请问怎样用VBA重命名文件

1、首先我们打开一个工作样表作为例子。

Ⅲ 如何利用vba代码批量提取文件名及修改日期到Excel表

程序代抄码:

OptionExplicit

SubYgB()
Dimp,i,fn
i=1
p="d:doc"
fn=Dir(p&"*.*")
Whilefn<>""
Cells(i,1)=fn
Cells(i,2)=FileDateTime(p&fn)
i=i+1
fn=Dir
Wend
EndSub


运行示例:

Ⅳ VBA 如何取C盘下和C盘文件夹下所有Excel文件名称,并将这些文件名放到Excel文件上。

VBA遍历文件夹常用有三种方法,这三种方法中,filesearch不适合2007和2010版本,而且速度比较慢,递归法速度也慢。只有用DIR加循环的方法,速度飞快。下面是三种方法的代码:
1、filesearch法
Sub test3()
Dim wb As Workbook
Dim i As Long
Dim t
t = Timer
With Application.FileSearch '调用fileserch对象
.NewSearch '开始新的搜索
.LookIn = ThisWorkbook.path '设置搜索的路径
.SearchSubFolders = True '搜索范围包括 LookIn 属性指定的文件夹中的所有子文件夹
.Filename = "*.xls" '设置搜索的文件类型
' .FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then '如果找到文件
For i = 1 To .FoundFiles.Count
'On Error Resume Next
Cells(i, 1) = .FoundFiles(i) '把找到的文件放在单元格里
Next i
Else
MsgBox "没找到文件"
End If
End With
MsgBox Timer - t
End Sub
2、递归法
Sub Test()
Dim iPath As String, i As Long
Dim t
t = Timer
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择要查找的文件夹"
If .Show Then
iPath = .SelectedItems(1)
End If
End With

If iPath = "False" Or Len(iPath) = 0 Then Exit Sub

i = 1
Call GetFolderFile(iPath, i)
MsgBox Timer - t
MsgBox "文件名链接获取完毕。", vbOKOnly, "提示"

End Sub
Private Sub GetFolderFile(ByVal nPath As String, ByRef iCount As Long)
Dim iFileSys
'Dim iFile As Files, gFile As File
'Dim iFolder As Folder, sFolder As Folders, nFolder As Folder
Set iFileSys = CreateObject("Scripting.FileSystemObject")
Set iFolder = iFileSys.GetFolder(nPath)
Set sFolder = iFolder.SubFolders
Set iFile = iFolder.Files
With ActiveSheet
For Each gFile In iFile
' .Hyperlinks.Add anchor:=.Cells(iCount, 1), Address:=gFile.path, TextToDisplay:=gFile.Name
iCount = iCount + 1
Next
End With

'递归遍历所有子文件夹
For Each nFolder In sFolder
Call GetFolderFile(nFolder.path, iCount)
Next
End Sub
3、dir循环法
Sub Test() '使用双字典,旨在提高速度
Dim MyName, Dic, Did, i, t, F, TT, MyFileName
'On Error Resume Next
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "选择文件夹", 0, 0)
If Not objFolder Is Nothing Then lj = objFolder.self.path & "\"
Set objFolder = Nothing
Set objShell = Nothing
t = Time
Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象
Set Did = CreateObject("Scripting.Dictionary")
Dic.Add (lj), ""
i = 0
Do While i < Dic.Count
Ke = Dic.keys '开始遍历字典
MyName = Dir(Ke(i), vbDirectory) '查找目录
Do While MyName <> ""
If MyName <> "." And MyName <> ".." Then
If (GetAttr(Ke(i) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录
Dic.Add (Ke(i) & MyName & "\"), "" '就往字典中添加这个次级目录名作为一个条目
End If
End If
MyName = Dir '继续遍历寻找
Loop
i = i + 1
Loop
Did.Add ("文件清单"), "" '以查找D盘下所有EXCEL文件为例
For Each Ke In Dic.keys
MyFileName = Dir(Ke & "*.xls")
Do While MyFileName <> ""
Did.Add (Ke & MyFileName), ""
MyFileName = Dir
Loop
Next
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name = "XLS文件清单" Then
Sheets("XLS文件清单").Cells.Delete
F = True
Exit For
Else
F = False
End If
Next
If Not F Then
Sheets.Add.Name = "XLS文件清单"
End If
Sheets("XLS文件清单").[A1].Resize(Did.Count, 1) = WorksheetFunction.Transpose(Did.keys)
TT = Time - t
MsgBox Minute(TT) & "分" & Second(TT) & "秒"
End Sub

Ⅳ Excel vba批量提取文件名+修改文件名!

首先新建一个excel文件,然后打开该excel,接着,按F12另存为xlsm格式的文件,如下图所示:

打开另存的文件xlsm,然后按ALT+F11,打开宏编辑界面,如下图所示:

接下来找到thisworkbook的模块,然后将如下的代码,复制粘贴到指定的模块中,如下图所示: 代码:Sub 批量获取文件名() Cells = "" Dim sfso Dim myPath As String Dim Sh As Object Dim Folder As Object Application.ScreenUpdating = False On Error Resume Next Set sfso = CreateObject("Scripting.FileSystemObject") Set Sh = CreateObject("shell.application") Set Folder = Sh.BrowseForFolder(0, "", 0, "") If Not Folder Is Nothing Then myPath = Folder.Items.Item.Path End If Application.ScreenUpdating = True Cells(1, 1) = "旧版名称" Cells(1, 2) = "文件类型" Cells(1, 3) = "所在位置" Cells(1, 4) = "新版名称" Call 直接提取文件名(myPath "\") End Sub Sub 直接提取文件名(myPath As String) Dim i As Long Dim myTxt As String i = Range("A1048576").End(xlUp).Row myTxt = Dir(myPath, 31) Do While myTxt "" On Error Resume Next If myTxt ThisWorkbook.Name And myTxt "." And myTxt ".." And myTxt "081226" Then i = i + 1 Cells(i, 1) = "'" myTxt If (GetAttr(myPath myTxt) And vbDirectory) = vbDirectory Then Cells(i, 2) = "文件夹" Else Cells(i, 2) = "文件" End If Cells(i, 3) = Left(myPath, Len(myPath) - 1) End If myTxt = Dir Loop End Sub Sub 批量重命名() Dim y_name As String Dim x_name As String For i = 2 To Range("A1048576").End(xlUp).Row y_name = Cells(i, 3) "\" Cells(i, 1) x_name = Cells(i, 3) "\" Cells(i, 4) On Error Resume Next Name y_name As x_name Next End Sub

然后回到excel的使用界面,找到视图当中的宏,点击查看宏按钮,如下图所示:

接着会弹出使用宏的界面,我们先找到第一个过程,批量获取文件名,并选择执行,如下图所示:

执行后,选择好我们要批量命名的文件,如下图的新建文件夹:

确定后,在excel即可得到如下的显示,证明我们已经提取成功了文件名:

大家看一下,是不是和新建文件夹中的文件名一样,如下图所示:

然后在新版名称中,输入我们想变更后的名称,如下图所示:

注意,要将文件的扩展名加上,如下图所示:

然后删除掉没用的列,如下图所示:

同样单击视图,宏当中的查看宏,调出我们的第二个过程,批量重命名,选择执行,如下图所示:

好了可以看到我们的文件重命名了,如下图所示:

在这里提供给大家,视频的演示:

Ⅵ excel vba打开文件 并且获得文件名 保存

f = Dir(folder & "*.txt")
myfile = Dir
f 和 myfile 两个变量混淆了

阅读全文

与excelvba获取文件名并修改相关的资料

热点内容
女朋友要拿微信头像 浏览:671
caesar教程 浏览:235
电工证app哪个好考 浏览:563
删除桌面所有文件脚本 浏览:193
php文件名扩展名 浏览:762
抖音在app内升不了级怎么办 浏览:66
cf不掉血文件2014 浏览:736
word批量发送邮件 浏览:241
两个iso文件怎么安装 浏览:281
delphi网络端口调试助手 浏览:22
创维机盒wifi输入密码 浏览:307
海迅设计软件支持什么格式的文件 浏览:645
熊猫麻将分享哪个app 浏览:832
linux下创建文本文件 浏览:782
iuni最新版本 浏览:614
如何在设置中打开应用网络 浏览:125
花椰菜网络语是什么意思 浏览:165
编程猫怎么换东西 浏览:857
win10进win7网络共享文件夹进不去 浏览:74
微信选择一个群找不到了 浏览:15

友情链接