VBA批量获得同文件夹夹内所有excel(同格式)相同位置的数据

Sub test()
Application.ScreenUpdating= False
p = ThisWorkbook.Path& "\"
f = Dir(p &"*.xls")
m = ThisWorkbook.Name
R = 1
Do
If f <> m Then
Workbooks.Open (p& f)
R = R + 1
WithWorkbooks(m).Sheets(1)
.Cells(R, 1) =Sheets("sheet2").[A1]'将A1值放在新表的第1列
.Cells(R, 2) =Sheets("sheet2").[B2]'将B2值放在新表的第2列
.Cells(R, 3) =Sheets("sheet2").[C3]'依次添加其他要读取的单元格
End With
ActiveWorkbook.Saved= True
ActiveWorkbook.Close
End If
f = Dir
Loop Until f =""
Application.ScreenUpdating= True
End Sub

由于我要统计的excel太多了,所以如果这些excel里混杂了一个不含sheet2的表格就会出现错误。希望懂VBA的大虾帮加个语句,如果找不到sheet2(或其他名)的自动跳过。不要弹出错误。

Sub test()
dim ws as worksheet '声明一个用于判断的临时变量
'...省略原代码
R = R + 1 '从这行的下一行开始修改
for each ws in worksheets 'for语句遍历工作簿查找是否有sheet2表格
if ws.name="sheet2" then exit for '如果找到,退出for
next for
if not ws is nothing then '如果ws不为空值,说明存在sheet2,执行取值操作
WithWorkbooks(m).Sheets(1)
.Cells(R, 1) =Sheets("sheet2").[A1]'将A1值放在新表的第1列
.Cells(R, 2) =Sheets("sheet2").[B2]'将B2值放在新表的第2列
.Cells(R, 3) =Sheets("sheet2").[C3]'依次添加其他要读取的单元格
End With
end if
'...省略原代码
End Sub

玛德,不会修改上面代码框中的代码,在这里说一下

把r=r+1 

放到if not ws is nothing then 这行代码下面

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-13
‘使用语句
on error resume next

’遇到错误继续执行

‘使用语句打开表格
Set ExcelApp = CreateObject("Excel.Application") '创建EXCEL对象
Set ExcelBook = ExcelApp.Workbooks.Open("y:\计划" & 计划表格号 & ".xls", ReadOnly:=True)
Set ExcelSheet = ExcelBook.Worksheets("计划1")
’使用语句关闭表格
ExcelBook.Close (False)
Set ExcelSheet = Nothing
Set ExcelBook = Nothing
Set ExcelApp = Nothing

我一直用这个格式,如果你还出错,那就是你有问题了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网