我具体想知道VBA中,可不可以通过 For Each In .......next.所以我想知道是否可以通过这种方式打开,workbooks 的上一级是什么。
如果没有直接的上一级,可不可以通过某种方式得到。
如果这种方式打不开,可以通过怎样的方式打开。
打开顺序只是按照普通的排列方式排序,依次打开一遍即可,文件的名字不确定。
谢谢大神啦
Sub æå¼()
Dim myPath$, myFile$, AK As Workbook
Application.ScreenUpdating = False 'å»ç»å±å¹ï¼ä»¥é²å±å¹æå¨
myPath = "c:\a\" 'å¨è¿éè¾å ¥ä½ çè·¯å¾ï¼å³ä½ åæ¾å·¥ä½ç°¿çæ件夹
myFile = Dir(myPath & "*.xlsx") 'ä¾æ¬¡æ¾å¯»æå®è·¯å¾ä¸ç*.xlsxæ件
Do While myFile <> "" 'å½æå®è·¯å¾ä¸ææ件æ¶è¿è¡å¾ªç¯
If myFile <> ThisWorkbook.Name Then
Set AK = Workbooks.Open(myPath & myFile) 'æå¼ç¬¦åè¦æ±çæ件
End If
'å¨è¿éæå ¥ä½ è¦å¤çç代ç
AK.close'è¿éå¯ä»¥éæ©åæ°æ¯å¦ä¿åï¼ä½ ä¹å¯ä»¥å é¤è¿è¡ä»£ç ï¼æå¨å ³éæ件
myFile = Dir 'æ¾å¯»ä¸ä¸ä¸ª*.xlsxæ件
Loop
Application.ScreenUpdating = True '解é¤å»ç»å±å¹,æ¤ç±»è¯å¥ä¸è¬æ对使ç¨
End Sub
Dim myPath$, myFile$, AK As Workbook
Application.ScreenUpdating = False 'å»ç»å±å¹ï¼ä»¥é²å±å¹æå¨
myPath = "c:\a\" 'å¨è¿éè¾å ¥ä½ çè·¯å¾ï¼å³ä½ åæ¾å·¥ä½ç°¿çæ件夹
myFile = Dir(myPath & "*.xlsx") 'ä¾æ¬¡æ¾å¯»æå®è·¯å¾ä¸ç*.xlsxæ件
Do While myFile <> "" 'å½æå®è·¯å¾ä¸ææ件æ¶è¿è¡å¾ªç¯
If myFile <> ThisWorkbook.Name Then
Set AK = Workbooks.Open(myPath & myFile) 'æå¼ç¬¦åè¦æ±çæ件
End If
'å¨è¿éæå ¥ä½ è¦å¤çç代ç
AK.close'è¿éå¯ä»¥éæ©åæ°æ¯å¦ä¿åï¼ä½ ä¹å¯ä»¥å é¤è¿è¡ä»£ç ï¼æå¨å ³éæ件
myFile = Dir 'æ¾å¯»ä¸ä¸ä¸ª*.xlsxæ件
Loop
Application.ScreenUpdating = True '解é¤å»ç»å±å¹,æ¤ç±»è¯å¥ä¸è¬æ对使ç¨
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-09-25
参考下面的代码:
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Application.ScreenUpdating = False
If MsgBox("需要操作的数据表是:EXCEL2003 格式,请选择:是!" & Chr(13) & "" & Chr(13) & "需要操作的数据表是:EXCEL2007 格式,请选择:否!", vbYesNo, "北极狐提示!!") = vbYes Then
S = "\*.xls"
ss = 4
Else
S = "\*.xlsx"
ss = 5:
End If
F = Dir(ThisWorkbook.Path & S)
Do While F > " "
If F <> ThisWorkbook.Name Then
Set xlBook = Workbooks.Open(ThisWorkbook.Path & "\" & F) '打开已经存在的EXCEL工件簿文件
For Each sh In xlBook.Worksheets '遍历工作表
with sh
'自己的代码
end with
Windows(ThisWorkbook.Name).Activate'回到打开的工作簿
Next
Windows(F).Close (true)'关闭打开的工作簿,并保存。
F = Dir
Loop
Application.ScreenUpdating = True
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Application.ScreenUpdating = False
If MsgBox("需要操作的数据表是:EXCEL2003 格式,请选择:是!" & Chr(13) & "" & Chr(13) & "需要操作的数据表是:EXCEL2007 格式,请选择:否!", vbYesNo, "北极狐提示!!") = vbYes Then
S = "\*.xls"
ss = 4
Else
S = "\*.xlsx"
ss = 5:
End If
F = Dir(ThisWorkbook.Path & S)
Do While F > " "
If F <> ThisWorkbook.Name Then
Set xlBook = Workbooks.Open(ThisWorkbook.Path & "\" & F) '打开已经存在的EXCEL工件簿文件
For Each sh In xlBook.Worksheets '遍历工作表
with sh
'自己的代码
end with
Windows(ThisWorkbook.Name).Activate'回到打开的工作簿
Next
Windows(F).Close (true)'关闭打开的工作簿,并保存。
F = Dir
Loop
Application.ScreenUpdating = True