⑴ 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