❶ excel遍歷本文件夾改成遍歷本文件夾及所有子文件夾
代碼太長,希望你理解我下面的方法,先看看你的代碼結構:
mypath=ThisWorkbook.Path&""
myname=Dir(mypath&"*.xl*")
DoWhilemyname<>""
'......
myname=Dir()
Loop
修改為下面的結構:
mypath=ThisWorkbook.Path&""
Shell"cmd.exe/cdir"&mypath&"*.xls?/b/s>c:1.txt"
WithWorkbooks.Open("c:1.txt")
arr=ActiveSheet.UsedRange
.Close
EndWith
ForEachmynameInarr
'......
Next
哦,還有一點,我的代碼循環裡面的myname是帶了完整路徑的。
❷ Excel 請問如何遍歷同一個文件夾查找
vba可以實現的,
http://club.excelhome.net/thread-1258425-1-1.html
這里有資料供參考
❸ 如何用vba遍歷文件夾裡面的子文件並且復制指定數據形成一張新的表格,ps:子文件的數據格式一直
嘗試用下邊代碼試試:
Sub OpenAndClose()
Dim MyFile As String
Dim s As String
Dim count As Integer
MyFile = Dir(文件夾目錄 & "*.xlsx")
'讀入文件夾中的第一個.xlsx文件
count = count + 1 '記錄文件的個數
s = s & count & "、" & MyFile
Do While MyFile <> ""
MyFile = Dir '第二次讀入的時候不用寫參數
If MyFile = "" Then
Exit Do '當MyFile為空的時候就說明已經遍歷完了,這時退出Do,否則還要運行一遍
End If
count = count + 1
If count Mod 2 <> 1 Then
s = s & vbTab & count & "、" & MyFile
Else
s = s & vbCrLf & count & "、" & MyFile
End If
Loop
Debug.Print s
End Sub
另外,可以考慮用python試試
❹ 遍歷一個文件夾內的所有EXCEL工作簿,找出同名的例如每個工作簿中Sheet2這張工作表全部列印出來的VBA。
修改為:
Subprt()
DimwsAsWorkbook,path$,d$
Application.ScreenUpdating=False
path=ThisWorkbook.path&""
d=Dir(path&"*.xls")
DoWhiled<>""
Ifd<>ThisWorkbook.NameThen
Setws=Workbooks.Open(path&d)
ws.Sheets("sheet2").PrintOut
ws.CloseFalse
EndIf
d=Dir
Loop
Application.ScreenUpdating=True
EndSub
❺ Excel 請問如何遍歷同一個文件夾內的Excel查找相關的內容
請參考:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "B1" Then Exit Sub
If Target = "" Then Exit Sub
Dim Fso As Object, File As Object, cnn As Object, rs As Object, rst As Object, SQL$, s$, m&, arr, brr(1 To 1000, 1 To 3), t$
t = "" & Target
Set Fso = CreateObject("Scripting.FileSystemObject")
Set cnn = CreateObject("adodb.connection")
For Each File In Fso.GetFolder(ThisWorkbook.Path).Files
If File.Name Like "*.xls*" And InStr(File.Name, ThisWorkbook.Name) = 0 Then
Set cnn = CreateObject("adodb.connection")
cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties=excel 12.0;Data Source=" & File
Set rs = cnn.OpenSchema(20)
Do Until rs.EOF
If rs.Fields("TABLE_TYPE") = "TABLE" Then
s = Replace(rs("TABLE_NAME").Value, "'", "")
If Right(s, 1) = "$" Then
SQL = "select * from [" & s & "] where 路徑 like '%" & t & "'"
Set rst = cnn.Execute(SQL)
If Not rst.EOF Then
m = m + 1
brr(m, 1) = Right$(Split(File.Name, ".")(0), 2) & "月" & Replace(s, "$", "")
brr(m, 2) = rst.Fields(0)
brr(m, 3) = rst.Fields(1)
End If
End If
End If
rs.MoveNext
Loop
End If
Next
ActiveSheet.UsedRange.Offset(2).ClearContents
If m > 0 Then Range("A3").Resize(m, 3) = brr
rs.Close
rst.Close
cnn.Close
Set rs = Nothing
Set rst = Nothing
Set cnn = Nothing
Set Fso = Nothing
End Sub
❻ Excel 如何遍歷一個文件夾下的所有文件並得到文件名
如要提取「我的文檔」下所有文件名,先定義一個名稱,如Files
=FILES("C:\Users\用戶名\Documents\"&"*.*")
然後比如A列是序號,B列是文件名,就在B2中輸入公式:
=HYPERLINK("C:\Users\用戶名\Documents\"&INDEX(Files,ROW(A1)),INDEX(Files,ROW(A1)))
下拉
❼ 大神《同一文件夾使用VBA遍歷所有excel表格並引用數據》 能否提供下實現的方法和步驟 教育用 感謝
用dir 和do loop 遍歷同一文件夾下的excel文件,在for next 循環中open 打開excel文件,for each next 循環工作簿中的工作表, usedrange.select 選擇使用區域,selection. 復制,activesheet.paste粘貼。
❽ 如何用python遍歷文件夾下的所有excel文件
大數據處理經常要用到一堆表格,然後需要把數據導入一個list中進行各種演算法分析,簡單講一下自己的做法:
1.如何讀取excel文件
網上的版本很多,在xlrd模塊基礎上,找到一些源碼:
[python]view plain
importxdrlib,sys
importxlrd
defopen_excel(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx"):
data=xlrd.open_workbook(file)
returndata
#根據索引獲取Excel表格中的數據參數:file:Excel文件路徑colnameindex:表頭列名所在行的所以,by_index:表的索引
defexcel_table_byindex(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_index=0):
data=open_excel(file)
table=data.sheets()[by_index]
nrows=table.nrows#行數
ncols=table.ncols#列數
colnames=table.row_values(colnameindex)#某一行數據
list=[]
forrownuminrange(1,nrows):
row=table.row_values(rownum)
ifrow:
app={}
foriinrange(len(colnames)):
app[colnames[i]]=row[i]
list.append(app)
returnlist
#根據名稱獲取Excel表格中的數據參數:file:Excel文件路徑colnameindex:表頭列名所在行的所以,by_name:Sheet1名稱
defexcel_table_byname(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_name=u'Sheet1'):
data=open_excel(file)
table=data.sheet_by_name(by_name)
nrows=table.nrows#行數
colnames=table.row_values(colnameindex)#某一行數據
list=[]
forrownuminrange(1,nrows):
row=table.row_values(rownum)
ifrow:
app={}
foriinrange(len(colnames)):
app[colnames[i]]=row[i]
list.append(app)
returnlist
defmain():
tables=excel_table_byindex()
forrowintables:
print(row)
tables=excel_table_byname()
forrowintables:
print(row)
if__name__=="__main__":
main()
最後一句讓代碼里的函數都可以被復用,簡單地說:假設文件名是a,在程序中import a以後,就可以用a.excel_table_byname()和a.excel_table_byindex()這兩個超級好用的函數了。
2.然後是遍歷文件夾取得excel文件以及路徑:,原創代碼如下:
[python]view plain
importos
importxlrd
importtest_wy
xpath="E:/唐偉捷/電力/電力系統總文件夾/舟山電力"
xtype="xlsx"
typedata=[]
name=[]
raw_data=[]
file_path=[]
defcollect_xls(list_collect,type1):
#取得列表中所有的type文件
foreach_elementinlist_collect:
ifisinstance(each_element,list):
collect_xls(each_element,type1)
elifeach_element.endswith(type1):
typedata.insert(0,each_element)
returntypedata
#讀取所有文件夾中的xls文件
defread_xls(path,type2):
#遍歷路徑文件夾
forfileinos.walk(path):
foreach_listinfile[2]:
file_path=file[0]+"/"+each_list
#os.walk()函數返回三個參數:路徑,子文件夾,路徑下的文件,利用字元串拼接file[0]和file[2]得到文件的路徑
name.insert(0,file_path)
all_xls=collect_xls(name,type2)
#遍歷所有type文件路徑並讀取數據
forevey_nameinall_xls:
xls_data=xlrd.open_workbook(evey_name)
foreach_sheetinxls_data.sheets():
sheet_data=test_wy.excel_table_byname(evey_name,0,each_sheet.name)
#請參考讀取excel文件的代碼
raw_data.insert(0,sheet_data)
print(each_sheet.name,":Datahasbeendone.")
returnraw_data
a=read_xls(xpath,xtype)
print("Victory")
❾ EXCEL VBA 遍歷所有文件夾和子文件夾的文件中指定單元格中的數據,匯總到一張工作表中,
把需要遍歷的所有路徑,寫到一個excel表裡不就行了,每次從這個表裡調用路徑去遍歷。或者dir /b /s *.xls*>d:\1.txt,把這個1.txt內容讀入表或數組,遍歷這個就行了。