⑴ vba如何打开一个文件夹及其子文件夹中所有的Excel表并处理合成一个表以方便日后查询,请高手指教不胜感谢
新建一个汇总表,ALF+F11打开VBE新建一个模块粘贴如下代码,然后运行此宏
Sub合并工作簿()
DimwbAsWorkbook
DimshAsWorksheet
DimtshAsWorksheet
DimcolAsLong
DimiAsLong
Settsh=ThisWorkbook.Sheets(1)
tsh.Cells.Clear
WithApplication.FileSearch'调用fileserch对象
.NewSearch'开始新的搜索
.LookIn="D:360data重要数据桌面新建文件夹"悄橡'设置搜索的路径
.SearchSubFolders=True'搜索范围包括LookIn属性指定的文件夹中的所有子文件夹
.Filename="*.xl*"'设置搜索的文件类型
If.Execute()>0Then'如果找到文件
Fori=1To.FoundFiles.Count'在搜索到的文件中循环
启碰旁Setwb=Workbooks.Open(.FoundFiles(i))'打开文件
ForEachshInwb.Sheets'在打开的工作簿中循环每个sheet
col=tsh.UsedRange.Columns.Count+tsh.UsedRange.Column'汇总表,表1当前数据最后一列的列号
sh.UsedRange.Copytsh.Cells(1,col+1)'把每个表都复制到汇总表,表1
Nextsh
wb.CloseFalse'关闭打开的工作簿
Nexti
Else
吵激MsgBox"没找到文件"
EndIf
Setwb=Nothing
Settsh=Nothing
EndWith
EndSub
注:由于 fileserch对象 只存在于2003版本, 此方法其他高级版本不适用
⑵ VBA中如何打开一个文件夹内的所有EXCEL文件
Sub Macro1() Dim myDialog As FileDialog, oFile As Object, strName As String, n As Integer Dim FSO As Object, myFolder As Object, myFiles As Object ,Dim fn$ Set myDialog = Application.FileDialog(msoFileDialogFolderPicker)n = 1With myDialog If .Show <> -1 Then Exit Sub Set FSO = CreateObject("Scripting.FileSystemObject") '这是文件夹选择,点选到你存放文件的那个 Set myFolder = FSO.GetFolder(.InitialFileName) Set myFiles = myFolder.Files For Each oFile In myFiles strName = UCase(oFile.Name) strName = VBA.Right(strName, 3) If strName = "xls" Or strName = "XLS" Then '这是扩展名选择 '下面就可接着写打开文件读取数据再写入的语句了,如下:
⑶ VBA中如何打开一个文件夹内的所有EXCEL文件
'这段代码是读取一个文件夹下的所有文件,也可以根据扩展名筛选其它格式的. '有了文件名,就是打开文件,获得每个文件的SHEET名字.然后写到你想要的地方 Sub Macro1() Dim myDialog As FileDialog, oFile As Object, strName As String, n As Integer Dim FSO As Object, myFolder As Object, myFiles As Object ,Dim fn$ Set myDialog = Application.FileDialog(msoFileDialogFolderPicker) n = 1 With myDialog If .Show <> -1 Then Exit Sub Set FSO = CreateObject("Scripting.FileSystemObject") '这是文件夹选择,点选到你存放文件兆悔的那个 Set myFolder = FSO.GetFolder(.InitialFileName) Set myFiles = myFolder.Files For Each oFile In myFiles strName = UCase(oFile.Name) strName = VBA.Right(strName, 3) If strName = "xls" Or strName = "XLS" Then '这是扩展名选择 '下面就可接着写打开文件读取数据再写入的语句了,如下族胡正: fn = myFolder & "\" & oFile.Name Workbooks.Open Filename:=fn Worksheets(1).Select '假设你读取SHEET1的数据 RANGE_ = Range("A2:F50") '需要数据的区域,自己修改 Windows("外部表格数据自动导入.xls").Activate '这个是新表的文件名,自己修改下 Worksheets(n).Select '打开第几个文件就选择SHEET几,如果没有可用ADD代码添加 Range("a2:f5") = RANGE_ '写做备入数据 Workbooks(2).Close n = n + 1 End If Next End With End Sub 查看原帖>>
⑷ vba如何打开一个文件夹下所有xls文件
注意神碧此 c:\a 目录下的文件不要太多,免得死机
Sub 打开excel表格()
Dim myPath$, myFile$, AK As Workbook
Application.ScreenUpdating = False '冻结屏幕,以防屏幕抖动
myPath = "c:\a\" '游迅把文件路径定义给变量
myFile = Dir(myPath & "*.xls") '依次找寻指定慧链路径中的*.xls文件
Do While myFile <> "" '当指定路径中有文件时进行循环
If myFile <> ThisWorkbook.Name Then
Set AK = Workbooks.Open(myPath & myFile) '打开符合要求的文件
End If
myFile = Dir '找寻下一个*.xls文件
Loop
Application.ScreenUpdating = True '冻结屏幕,此类语句一般成对使用
End Sub
⑸ Excel 如何使用VBA打开指定路径下的文件夹
将当前文件夹设为默认即可。
在你的语句前面加上下面两句:
ChDir ThisWorkbook.Path
ChDrive ThisWorkbook.Path
⑹ 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")
⑺ VBA,如何随机打开一个文件夹,假如有三个文件夹的话
'首先,调用DOS命令获得指定目前下所有文件夹名列表,代码如下:
Dim MyFold() as String '定义动态世态字符串数组
MyDir="D:\Test " '指定待处理的文件夹,可自行修改
shell "cmd.exe /c dir /B/ad "+MyDir+" > FoldList.txt" ,vbhide '本命令功能为获取指定目录MyDir下所有文件夹名列表,包括隐藏文件夹,但不包括子文件夹
'然后读取FoldList.txt中的数据,获取文件夹名的数量,代码如下:
Fn=0
Open MyDir+"\FoldList.txt" For input as #1
Do Until EOF(1)
Line Input #1, FL
Fn=Fn+1
Loop
Colse #1
ReDim MyFold(Fn-1) '重帆悄肢新定义数组
'然后,给数组赋值,代码如下:
i=0
Open MyDir+"\FoldList.txt" For input as #1
Do Until EOF(1)
Line Input #1, FL
MyFold(i)=MyDir+"\"+FL
i=i+1
Loop
Colse #1
Kill MyDir+"\FoldList.txt"
'然后是获取一个随机数,以随机打开指定的文件夹,代码如下:
i=int((Fn-1)*Rnd)
shell "Explorer.exe "+MyFold(i) '打开随机指定的文件夹
'如果待随机打开的文件夹不是处运弯在同一父目录下,则只能人工给每一个数组元素单独赋值后随机打开了。
⑻ 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,电子表格,如何用按钮事件打开一个文件夹
Private Sub CommandButton1_Click() Dim Obj As Object, Path1
Set Obj = CreateObject("shell.application")
Set Path1 = Obj.BrowseForFolder(0, "选择要打开的文件夹:", 0)
If Not Path1 Is Nothing Then
Obj.Open (Path1.self.Path)
End If
End Sub