Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1874|回复: 4

[已解决]【求助】请高手帮忙修改下代码(不打开工作簿取数值

[复制链接]
发表于 2012-1-16 20:22 | 显示全部楼层 |阅读模式
有2张相同结构的工作簿,其中一张工作簿(取数源)的数据是用公式取的其他多个表的数据,现在想在汇总表工作簿中取“取数源”工作簿的内容,但2个工作簿除要填写的单元格以外都被锁定了,要取数值又不能一个一个粘贴,我是新手,写了段代码,但运行太慢了,还请高手帮忙修改或者写一段,非常感谢,祝新年快乐,附上我的代码
Sub 汇总华东()
Dim arr1, arr2, arr3
Dim wb As Workbook
Dim i As Integer, j As Integer
Application.ScreenUpdating = False
arr = Array("h", "j", "l", "n", "p", "t", "v", "x", "z", "ab", "ad", "af", "ah")
For j = 0 To 12
  For i = 18 To 161 Step 13
Set wb = GetObject("E:\取数源.xls")
arr1 = wb.Sheets("华东").Range(arr(j) & i)
arr2 = wb.Sheets("华东").Range(arr(j) & i + 2).Resize(4, 1)
arr3 = wb.Sheets("华东").Range(arr(j) & i + 7)
With Sheets("华东")
.Range(arr(j) & i) = arr1
.Range(arr(j) & i + 2).Resize(4, 1) = arr2
.Range(arr(j) & i + 7) = arr3
End With
Next i
Next j
Windows(wb.Name).Visible = True
wb.Close False
Set wb = Nothing
Application.ScreenUpdating = True
End Sub

最佳答案
2012-1-16 21:34
本帖最后由 rxj_0414 于 2012-1-16 21:35 编辑

因为表格中数据已被保护,所以不必担心会写错数据,只需加句错误处理代码即可。

  1. Sub 汇总华东rxj11()
  2.     Dim arrRSC
  3.     Dim wb As Workbook
  4.     Application.ScreenUpdating = False
  5.     Set wb = GetObject("E:\取数源.xls")
  6.     arrRSC = wb.Sheets("华东").Range("A1:AK173").Value
  7.     On Error Resume Next
  8.     Sheets("华东").Range("A1:AK173") = arrRSC
  9.     wb.Close False
  10.     Set wb = Nothing
  11.     Application.ScreenUpdating = True
  12. End Sub
复制代码

取数.rar

109.04 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-1-16 21:34 | 显示全部楼层    本楼为最佳答案   
本帖最后由 rxj_0414 于 2012-1-16 21:35 编辑

因为表格中数据已被保护,所以不必担心会写错数据,只需加句错误处理代码即可。

  1. Sub 汇总华东rxj11()
  2.     Dim arrRSC
  3.     Dim wb As Workbook
  4.     Application.ScreenUpdating = False
  5.     Set wb = GetObject("E:\取数源.xls")
  6.     arrRSC = wb.Sheets("华东").Range("A1:AK173").Value
  7.     On Error Resume Next
  8.     Sheets("华东").Range("A1:AK173") = arrRSC
  9.     wb.Close False
  10.     Set wb = Nothing
  11.     Application.ScreenUpdating = True
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2012-1-16 21:35 | 显示全部楼层
Set wb = GetObject("E:\取数源.xls")可以放到循环外面来,会快一些。
回复

使用道具 举报

发表于 2012-1-16 21:40 | 显示全部楼层
rxj_0414 发表于 2012-1-16 21:34
因为表格中数据已被保护,所以不必担心会写错数据,只需加句错误处理代码即可。

高,实在是高!!!
回复

使用道具 举报

 楼主| 发表于 2012-1-16 22:00 | 显示全部楼层
没想到这么“简单”,我弄得太复杂了,高手就是高手
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-31 15:20 , Processed in 0.183635 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表