|
各位大神:
写了一段代码,选择多个汇总工作簿后,取数只能取到最后一个工作簿中的数据,并且位置不正确,希望大神们帮忙看看是哪里的问题,多谢!
代码如下:
Sub 按钮1_Click()
'//弹出窗口,让用户选择需要合并的工作簿
MsgBox "请选择需要汇总的纳税底稿"
pth = Application.GetOpenFilename("文件(*.xlsx*),*.xlsx*", , "请选择文件", , True) 'GetOpenFilename支持通配符,true代表允许多选。
If Not IsArray(pth) Then '如果用户没有选择文件,则返回False,不是数组。
Exit Sub '退出过程
End If
'//
Application.ScreenUpdating = False '禁止刷新,防止屏幕闪烁,提高运行速度
Application.AskToUpdateLinks = False '禁止提示更新链接
Application.DisplayAlerts = False '禁止无关的提示信息
Set thissht = ThisWorkbook.ActiveSheet '把代码工作簿的活动工作表赋值给对象变量thissht
For i = 1 To UBound(pth) 'GetOpenFilename多选文件的话返回的是一个数组,里面存放的是每个文件的路径,循环数组获取里面的文件路径。
Set wb = Workbooks.Open(pth(i)) '将打开的工作簿赋值给对象变量wb
Set sheeta = wb.Worksheets("主2增值税预缴表") '
lastrow = thissht.Cells(thissht.Rows.Count, 1).End(3).Row '获取代码工作簿已使用的最大行号+1
With thissht 'with结构,简化代码
.Cells(lastrow, 1) = i '序号
.Cells(lastrow, 4) = sheeta.Range("D10") '抽取工作表【主2增值税预缴表】的D10单元格
End With
wb.Close False '关闭打开的工作簿,直接用对象变量wb.clsoe即可。false表示不保存。
Next
Application.ScreenUpdating = True '开启刷新
Application.AskToUpdateLinks = True '开启提示更新链接
Application.DisplayAlerts = True '开启无关的提示信息
MsgBox "完成!"
End Sub
|
|