① VBA获取某文件夹下所有文件和子文件目录的文件
【引用位置】 https://blog.csdn.net/pashine/article/details/42100237
'-------------------------------------------
'获取某文件夹下的所有Excel文件
'-------------------------------------------
Sub getExcelFile(sFolderPath As String)
On Error Resume Next
Dim f As String
Dim file() As String
Dim x
k = 1
ReDim file(1)
file(1) = sFolderPath & ""
End Sub
'-------------------------------------------
'获取某文件夹下的所有文件和子目录下的文件
'-------------------------------------------
Sub getAllFile(sFolderPath As String)
'Columns(1).Delete
On Error Resume Next
Dim f As String
Dim file() As String
Dim i, k, x
x = 1
i = 1
k = 1
ReDim file(1 To i)
file(1) = sFolderPath & ""
'-- 获得所有子目录
Do Until i > k
f = Dir(file(i), vbDirectory)
Do Until f = ""
If InStr(f, ".") = 0 Then
k = k + 1
ReDim Preserve file(1 To k)
file(k) = file(i) & f & ""
End If
f = Dir
Loop
i = i + 1
Loop
'-- 获得所有子目录下的所有文件
For i = 1 To k
f = Dir(file(i) & " . ") '通配符 . 表示所有文件,*.xlsx Excel文件
Do Until f = ""
'Range("a" & x) = f
Range("a" & x).Hyperlinks.Add Anchor:=Range("a" & x), Address:=file(i) & f, TextToDisplay:=f
x = x + 1
f = Dir
Loop
Next
End Sub
Sub Read_Word()x0dx0aDim worDoc As objectx0dx0aDim wordappl As objectx0dx0aDim mydoc As Stringx0dx0aDim myappl As Stringx0dx0amydoc = thisworkbook.path & "\" & "文件名.doc"x0dx0a'本文档目录下的doc文件,这里可以直接改成路径+文件名的形式x0dx0aSet wordappl = CreateObject("Word.application")'设置wordappl对象x0dx0aSet worDoc = wordappl.Documents.Open(mydoc)x0dx0a'打开word文档,mydoc变量指定路径和文件名x0dx0aworDoc.Activate'激活打开的文档x0dx0awordappl.Selection.WholeStory '全选文档x0dx0awordappl.Selection.Copy'复制选择内容到剪贴板x0dx0aworDoc.Application.Quit'关闭word文档x0dx0aSet WordApp = Nothing'释放对象变量的内存x0dx0aWorkbooks(1).Sheets(2).Activate '激活excel第一个工作簿的第二个工作表x0dx0aActiveSheet.UsedRange.Clear'把当前工作表清空,如果有重要数据,这条删除x0dx0aCells(1, 1).Select'选择A1单元格x0dx0aActiveSheet.Paste'粘贴复制的内容x0dx0awordappl.quitx0dx0aset wordappl =nothingx0dx0aEnd Sub
③ 如何在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读取文件夹中的文件名
提取当前文件夹下的文件名称并放在A列
Sub 按钮1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("scripting.filesystemobject")
Set ff = fso.getfolder(ThisWorkbook.Path) 'ThisWorkbook.Path是当前代码文件所在路径,路径名可以根据需求修改
ActiveSheet.UsedRange.ClearContents
a = 1
For Each f In ff.Files
Rem 如果不需要提取本代码文件名,可以增加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 + 1
Next f
Application.ScreenUpdating = True
End Sub
⑤ vba 查找打开文件夹的文件
以下代码,楼主可以参考,打开文件夹,选择文件后自动打开
Sub text()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path & "\"
.Title = "请选择对应文本文件"
.AllowMultiSelect = False
If .Show Then f = .SelectedItems(1) Else Exit Sub '
End With
Shell "RUNDLL32.EXE URL.DLL,FileProtocolHandler " & f, vbMaximizedFocus
End Sub
⑥ 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
⑦ vba如何自动创建文件夹
给你一个最简单的方法x0dx0aSubprogramx0dx0aIfDir("F:\"&Format(Date,"YYYY-M-D"),vbDirectory)<>""Thenx0dx0aMsgBox"文件夹存在"x0dx0aElsex0dx0aMsgBox"文件夹不存在!,系统将创建一个名为"&Format(Date,"YYYY-M-D")&"的文件夹"x0dx0aMkDir"F:\"&Format(Date,"YYYY-M-D")日期的格式可以自己该
⑧ EXCEL如何使用VBA打开相对路径下的文件或文件夹
打开文件如下:
Workbooks.Open ("C:对账单对帐单.xlsx")
这里你可以把“C:对账单”换成你的绝对路径,
你可以用:a = ThisWorkbook.Path
a = ThisWorkbook.Path
Workbooks.Open ("" & a & "&" "&对帐单.xlsx")
来获取你当前表的绝对路径,然后再打开,因为不知道你的具体情况,如果有问题可以hai我
如果当前文件夹下还有A文件夹可以用代码:
Workbooks.Open ("" & a & "&" A"&b.xlsx")