『壹』 如何在Excel中用VBA创建文件夹
方法/步骤
1
方法1:使用VBA的MkDir语句创建文件夹。
代码如下:
Sub xyf()
On Error Resume Next
VBA.MkDir ("c:/例子")
End Sub
其中 VBA.MkDir ("c:/例子")表示在C盘创建一个名为“例子”的文件夹
On Error Resume Next语句表示如果已经有这个文件夹,则不创建。
如下图所示:
『贰』 vba操作文件夹
Sub 拷贝文件夹()
On Error Resume Next
Set fs = CreateObject("Scripting.FileSystemObject")
For i = 2 To 100
If Cells(i, 1) = "" Then Exit For
OldString = "路径说明书"
NewString = "路径" & Cells(i, 1) & "说明书"
fs.Copyfolder OldString, NewString
Set fs = Nothing
Next
End Sub
『叁』 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 LoopEnd Sub 4.关闭VBE窗口,回到工作表中,可以在C列看到F盘“office教程网”文件夹下面所有的文件名全部罗列在C列了。 关于上面的vba提取文件名的代码,请在实际使用时,根据需要修改提取文件名的路径(F:\office教程网\*.*),以及存放在C列的位置(Cells(i, 3))。
『肆』 vba判断文件夹是否存在
VBA中有时要判断文件或文件夹是否存在,为打开文件作准备,这里采用错误机制来判断
代码如下:
Function 文件或文件夹是否存在(全路径 As String) As Boolean
On Error GoTo
EarlyExit
If Not Dir(全路径, vbDirectory) = vbNullString Then
文件或文件夹是否存在 = True
End If
Exit Function
EarlyExit:
文件或文件夹是否存在 = False
End Function
需在说明的是,参数“全路径”要有盘符之类的,呵呵
使用方法与其它函数一样
VBA的操作中,有时要打开一个文件,但要是文件已打开,再次通过程序打开时,会出现错误,因此,在打开文件之前,需在先判断文件是否已打开,下面是判断代码:
Function 文件是否打开(文件名 As
String) As Boolean
On Error Resume Next
文件是否打开 = True
If StrComp(Workbooks(文件名).Name, 文件名, vbTextCompare) 0 Then
文件是否打开 = False
End If
End Function
需要说明的是,参数“文件名”是短文件名(不带路径的文件名)
Function 特殊文件夹路径(文件夹名
As String) As String
Dim WSHShell As Object
Dim lj As String
Set WSHShell =
CreateObject("Wscript.Shell")
lj = WSHShell.SpecialFolders(文件夹名)
Set WSHShell = Nothing
特殊文件夹路径 = lj
End Function
文件夹名有:
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
Desktop
Favorites
Fonts
MyDocuments
NetHood
PrintHood
Programs
Recent
SendTo
StartMenu
Startup
Templates
『伍』 VBA怎么新建文件夹
代码实现重新构建所有链接,如果要单独刷新某文件夹的文件链接,可仿效代码(可不用单独刷新,如有增删,重新全部构建)。Subtest()Dimfso,fp,ar,ar1,subf,f,n%,m%,i%,j%,cAsRangeSheets("6月").ActivateActiveSheet.UsedRange.Offset(2)=""Setfso=CreateObject("scripting.filesystemobject")Setfp=fso.getfolder(ThisWorkbook.Path).subfoldersReDimar(1Tofp.Count)ForEachsubfInfpn=n+1Ifsubf.Files.Count0ThenReDimar1(1Tosubf.Files.Count)m=0ForEachfInsubf.Filesm=m+1ar1(m)=f&"|"&fso.getbasename(subf)&"|"&fso.getbasename(f)Nextar(n)=ar1EndIfNextFori=1ToUBound(ar)IfIsArray(ar(i))ThenSetc=Rows(1).Find(Split(ar(i)(1),"|")(1))IfNotcIsNothingThenForj=1ToUBound(ar(i))Withc.End(xlDown).Offset(1).Value=Split(ar(i)(j),"|")(2)ActiveSheet.Hyperlinks.AddAnchor:=.Offset(1),Address:=Split(ar(i)(j),"|")(0)=NothingEndSub
『陆』 如何用VBA复制整个文件夹包括子目录
Sub Files(Path As String, afterPath)'Path:原文件夹路径;afterPath:目标文件夹路径Dim Spath As StringSet fs = CreateObject("Scripting.FileSystemObject")Spath = Dir(Path, vbDirectory)Do While Len(Spath)If Spath <> "." And Spath <> ".." Thenfs.CopyFolder Path, afterPathSpath = Dir()End IfLoopEnd Sub————————————————版权声明:本文为CSDN博主「前端小菜鸟007」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_41844140/article/details/103188537
『柒』 vba读取文件夹中的文件名
提取当前文件夹下的文件名称并放在A列Sub 按钮1_Click()Application.ScreenUpdating = FalseSet fso = CreateObject("scripting.filesystemobject")Set ff = fso.getfolder(ThisWorkbook.Path) 'ThisWorkbook.Path是当前代码文件所在路径,路径名可以根据需求修改ActiveSheet.UsedRange.ClearContentsa = 1For Each f In ff.FilesRem 如果不需要提取本代码文件名,可以增加if语句 if f.name<> thisworkbook.name then…..Rem 如果值需要提取某类文件,需要对f.name的扩展名进行判断Rem 个人感觉split取 扩展名:split(f.name,".")(ubound(split(f.name,"."))),然后再判断,避免文件名还有其他“.”Cells(a, 1) = f.Name '相对路径名Cells(a, 2) = f '全路径名a = a + 1Next fApplication.ScreenUpdating = TrueEnd Sub
『捌』 用vba如何导入一个文件夹里的文件绝对路径(包含扩展名)到excel里
Sub MMM()Dim myPath$, myFile$, i&Application.ScreenUpdating = FalsemyPath = "D:\新建文件夹" & "\"myFile = Dir(myPath & "*.*")Do While myFile <> ""i = i + 1Cells(i, 1) = myPath & myFilemyFile = DirLoopApplication.ScreenUpdating = TrueEnd Sub
『玖』 VBA 如何显示文件夹,就是只打开文件夹就可以了
直接使用Shell函数,使用explorer.exe来打开文件夹即可。代码如下:
Subshowdir()Shell"explorer.exeD:dir",vbNormalFocusEndSub
效果如下:
Shell 函数说明运行可执行程序并在成功时返回表示程序的任务 ID 的 Variant (Double),否则返回零。语法Shell(pathname[,windowstyle])Shell 函数语法具有以下命名参数:组成部分说明pathname必需;Variant (String)。要执行的程序的名称以及任何必需的参数或命令行开关;可能包括目录或文件夹和驱动器。在 Macintosh 中,可以使用 MacID 函数指定应用程序的签名,而不是名称。以下示例使用 Microsoft Word 的签名:Shell MacID("MSWD")windowstyle可选。与要运行程序的窗口的样式对应的 Variant (Integer)。如果省略 windowstyle,程序将启动并最小化,但会获得焦点。在 Macintosh(System 7.0 或更高版本)中,windowstyle 只确定应用程序在运行时是否获得焦点。windowstyle 命名参数具有以下值:常量 值 说明vbHide 0 隐藏窗口并将焦点传递给隐藏的窗口。vbHide 常量在 Macintosh 平台中不适用。vbNormalFocus 1 窗口获得焦点,并还原到其原始尺寸和位置。vbMinimizedFocus 2 窗口显示为具有焦点的图标。vbMaximizedFocus 3 窗口最大化并具有焦点。vbNormalNoFocus 4 窗口还原到最近的尺寸和位置。当前活动的窗口仍保持活动状态。vbMinimizedNoFocus 6 窗口显示为图标。当前活动的窗口仍保持活动状态。注释如果 Shell 函数成功执行命名文件,它将返回已启动程序的任务 ID。任务 ID 是标识正在运行的程序的唯一编号。如果 Shell 函数无法启动指定的程序,则会发生错误。在 Macintosh 中,vbNormalFocus、vbMinimizedFocus 和 vbMaximizedFocus 都将应用程序放在前台;vbHide、vbNoFocus、vbMinimizeFocus 都将应用程序放在后台。
未经允许不得转载:山九号 » vba文件夹|如何用VBA复制整个文件夹包括子目录